std::free
Определено в заголовке <cstdlib> | ||
|---|---|---|
void free( void* ptr ); |
Освобождает память, ранее выделенную функциями std::malloc, std::calloc, std::aligned_alloc(с C++17), или std::realloc.
Если ptr является указателем null, функция ничего не делает.
Поведение не определено, если значение ptr не равно значению, возвращённому ранее функциями std::malloc, std::calloc, std::aligned_alloc(с C++17), или std::realloc.
Поведение не определено, если область памяти, на которую ссылается ptr уже была освобождена, то есть std::free или std::realloc уже были вызваны с ptr в качестве аргумента и не было вызовов std::malloc, std::calloc, std::aligned_alloc(с C++17), или std::realloc, которые привели к получению указателя, равного ptr.
Поведение не определено, если после возврата из std::free происходит обращение к указателю ptr (если только другая функция выделения памяти не вернула значение, равное ptr).
| Следующие функции должны быть потокобезопасными:
Вызовы этих функций, которые выделяют или освобождают определённый блок памяти, происходят в едином порядке, и каждый такой вызов освобождения предшествует следующему выделению (если таковое есть) в этом порядке. | (с C++11) |
Параметры
| ptr | - | указатель на память для освобождения |
Возвращаемое значение
(нет)
Примечания
Функция принимает (и ничего с ним не делает) указатель null, чтобы уменьшить количество специальных случаев. Независимо от успеха выделения, указатель, возвращённый функцией выделения, может быть передан в std::free.
Пример
#include <cstdlib>
int main()
{
int* p1 = (int*)std::malloc(10 * sizeof *p1);
std::free(p1); // every allocated pointer must be freed
int* p2 = (int*)std::calloc(10, sizeof *p2);
int* p3 = (int*)std::realloc(p2, 1000 * sizeof *p3);
if (!p3) // p3 null means realloc failed and p2 must be freed.
std::free(p2);
std::free(p3); // p3 can be freed whether or not it is null.
}См. также
C документация для free |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/c/free