free
|
Определено в заголовочном файле
<stdlib.h>
|
||
|
void
free
(
void
*
ptr
)
;
|
||
Освобождает пространство, ранее выделенное с помощью malloc() , calloc() , aligned_alloc() , (начиная с C11) или realloc() .
Если
ptr
является нулевым указателем, функция ничего не делает.
Поведение не определено, если значение
ptr
не равно значению, возвращённому ранее функцией
malloc()
,
calloc()
,
realloc()
, или
aligned_alloc()
(начиная с C11)
.
Поведение не определено, если область памяти, на которую ссылается
ptr
, уже была освобождена, то есть,
free()
,
free_sized()
,
free_aligned_sized()
(since C23)
, или
realloc()
уже была вызвана с
ptr
в качестве аргумента и после этого не было вызовов
malloc()
,
calloc()
,
realloc()
, или
aligned_alloc()
(since C11)
, которые вернули бы указатель, равный
ptr
.
Поведение не определено, если после возврата из
free()
осуществляется доступ через указатель
ptr
(если только другая функция выделения памяти случайно не вернула значение указателя, равное
ptr
).
|
Вызов
|
(начиная с C11) |
Содержание |
Параметры
| ptr | - | указатель на освобождаемую область памяти |
Возвращаемое значение
(нет)
Примечания
Функция принимает (и ничего не делает с) нулевым указателем для уменьшения количества особых случаев. Независимо от того, успешно ли выделение памяти или нет, указатель, возвращаемый функцией выделения, может быть передан в
free()
.
Пример
#include <stdlib.h> int main(void) { int *p1 = malloc(10*sizeof *p1); free(p1); // каждый выделенный указатель должен быть освобожден int *p2 = calloc(10, sizeof *p2); int *p3 = realloc(p2, 1000*sizeof *p3); if(p3) // p3 не null означает, что p2 был освобожден realloc free(p3); else // p3 null означает, что p2 не был освобожден free(p2); }
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.24.3.3 Функция free (стр: 365)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.22.3.3 Функция free (стр. 254)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.22.3.3 Функция free (стр. 348)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.20.3.2 Функция free (стр. 313)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.10.3.2 Функция free
Смотрите также
|
выделяет память
(функция) |
|
|
(C23)
|
освобождает ранее выделенную память с указанным размером
(функция) |
|
(C23)
|
освобождает ранее выделенную выровненную память с указанным размером
(функция) |
|
Документация C++
для
free
|
|