std::free
Defined in header <cstdlib>
|
||
void free( void* ptr ); |
||
Освобождает память, которая была выделена с помощью std::malloc(), std::calloc() или std::realloc().
Если ptr
- нулевой указатель, то функция ничего не делает.
Её поведение не определено, если значение ptr
не равно полученному ранее от std::malloc(), std::calloc() или std::realloc(), а также если память по указателю ptr
была уже очищена с помощью std::free()
или std::realloc(), но никаких других вызовов std::malloc(), std::calloc() или std::realloc(), порождающих этот указатель не было сделано.
Поведение не определено, если после возврата из std::free()
был произведён доступ по указателю ptr
(только если не был произведён вызов функции распределения памяти, породивший указатель равный ptr
)
Содержание |
[править] Параментры
ptr | — | указатель для очистки памяти |
[править] Возвращаемое значение
(нет)
[править] Примечание
Функция принимает (и ничего не делает) с нулевым указателем, чтобы сократить количество специальных преобразований. Успешно распределение было или нет, указатель, возвращённый выделяющими память функциями, безопасно передавать в free()
.
[править] Пример
#include <cstdlib> int main() { int* p1 = (int*)std::malloc(10*sizeof *p1); std::free(p1); // После каждого выделения, указатель должен быть освобождён int* p2 = (int*)std::calloc(10, sizeof *p2); int* p3 = (int*)std::realloc(p2, 1000*sizeof *p3); if(p3) // p3 не нулевой указатель, а значит p2 освободил std::realloc std::free(p3); else // p3 - нулевой указатель, а значит p2 не освободил std::realloc std::free(p2); }
[править] См. также
Справка по C — free
|