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) |
Parámetros
| ptr | - | Puntero a la memoria a 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 se puede pasar 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 no tuvo éxito y p2 debe liberarse.
std::free(p2);
std::free(p3); // p3 puede liberarse independientemente de si es nulo o no.
}
Véase también
Documentación de C para free
|