std:: free
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<cstdlib>
|
||
|
void
free
(
void
*
ptr
)
;
|
||
Libera el espacio previamente asignado por std::malloc , std::calloc , std::aligned_alloc (since C++17) , o std::realloc .
Si ptr es un puntero nulo, la función no hace nada.
El comportamiento es indefinido si el valor de ptr no es igual a un valor devuelto anteriormente por std::malloc , std::calloc , std::aligned_alloc (since C++17) , o std::realloc .
El comportamiento es indefinido si el área de memoria referida por
ptr
ya ha sido desasignada, es decir,
std::free
o
std::realloc
ya ha sido llamado con
ptr
como argumento y ninguna llamada a
std::malloc
,
std::calloc
,
std::aligned_alloc
(since C++17)
, o
std::realloc
resultó en un puntero igual a
ptr
posteriormente.
El comportamiento es indefinido si después de que
std::free
retorna, se realiza un acceso a través del puntero
ptr
(a menos que otra función de asignación haya resultado en un valor de puntero igual a
ptr
).
|
Las siguientes funciones deben ser seguras para hilos (thread-safe):
Las llamadas a estas funciones que asignan o liberan una unidad particular de almacenamiento ocurren en un único orden total, y cada llamada de liberación happens-before la siguiente asignación (si existe) en este orden. |
(desde C++11) |
Contenidos |
Parámetros
| ptr | - | puntero a la memoria para desasignar |
Valor de retorno
(ninguno)
Notas
La función acepta (y no hace nada con) el puntero nulo para reducir la cantidad de casos especiales. Ya sea que la asignación tenga éxito o no, el puntero devuelto por una función de asignación puede pasarse a
std::free
.
Ejemplo
#include <cstdlib> int main() { int* p1 = (int*)std::malloc(10 * sizeof *p1); std::free(p1); // cada puntero asignado debe liberarse int* p2 = (int*)std::calloc(10, sizeof *p2); int* p3 = (int*)std::realloc(p2, 1000 * sizeof *p3); if (!p3) // p3 nulo significa que realloc falló y p2 debe liberarse. std::free(p2); std::free(p3); // p3 puede liberarse tanto si es nulo como si no. }
Véase también
|
Documentación de C
para
free
|