std::free
Definido en el archivo de encabezado <cstdlib>
|
||
void free( void* ptr ); |
||
Desasigna el espacio previamente asignado por std::malloc, std::calloc, std::aligned_alloc (desde C++17), o std::realloc.
Si ptr
es un puntero nulo, la función no hace nada.
El comportamiento no está definido si el valor de ptr
no es igual a un valor devuelto anteriormente por std::malloc, std::calloc, std::aligned_alloc (desde C++17), o std::realloc.
El comportamiento no está definido si el área de memoria a la que se refiere ptr
ya ha sido desasignada, es decir, std::free
o std::realloc ya ha sido llamada con ptr
como argumento y no hay llamadas a std::malloc, std::calloc, std::aligned_alloc (desde C++17), o std::realloc que resultaron en un puntero igual a ptr
después.
El comportamiento no está definido si después de que std::free
regresa, se realiza un acceso a través del puntero ptr
(a menos que otra función de asignación resulte en un valor de puntero igual a ptr
).
Se requiere que las siguientes funciones sean seguras frente a hilos:
Las llamadas a estas funciones que asignan o desasignan una unidad de almacenamiento particular ocurren en un orden total único, y cada llamada de desasignación sucede-antes que la siguiente asignación (si es que la hay) en este orden. |
(desde C++11) |
Contenido |
[editar] Parámetros
ptr | - | Puntero a la memoria a desasignar. |
[editar] Valor de retorno
(Ninguno)
[editar] 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 se puede pasar a std::free
.
[editar] 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 no tuvo éxito y p2 debe liberarse. std::free(p2); std::free(p3); // p3 puede liberarse independientemente de si es nulo o no. }
[editar] Véase también
Documentación de C para free
|