_freea
Освобождает блок памяти.
Синтаксис
void _freea(
void *memblock
);
Параметры
memblock
Ранее выделенный блок памяти, который требуется освободить.
Возвращаемое значение
Нет.
Замечания
Функция _freea
освобождает блок памяти (memblock
), который ранее был выделен вызовом _malloca
. Функция _freea
проверяет, была ли память выделена в стеке или в куче. Если она была выделена в стеке, функция _freea
не выполняет никаких действий. Если память выделена в куче, число освобожденных байтов эквивалентно количеству байтов, запрошенному при выделении блока. Если memblock
есть NULL
, указатель игнорируется и _freea
немедленно возвращается. Попытка освободить недопустимый указатель (указатель на блок памяти, который не был выделен _malloca
) может повлиять на последующие запросы на выделение и вызвать ошибки.
_freea
вызывает free
внутренне, если он находит, что память выделена в куче. Информация о том, выделена ли память в куче или в стеке, определяется меткой, которая устанавливается в памяти по адресу, непосредственно предшествующему выделенному блоку памяти.
В случае возникновения ошибки при освобождении памяти для errno
задаются сведения о характере сбоя, полученные от операционной системы. Дополнительные сведения см. в разделе errno
, _doserrno
, _sys_errlist
, и _sys_nerr
.
После освобождения блока памяти свести к минимуму объем свободной памяти в куче, _heapmin
объединив неиспользуемые регионы и отпустив их обратно в операционную систему. Освобожденная память, которая не освобождается в операционной системе, восстанавливается в свободном пуле и снова доступна для выделения.
Вызов _freea
должен сопровождать все вызовы _malloca
. Это также ошибка для вызова _freea
дважды в одной памяти. Если приложение связано с отладочной версией библиотек времени выполнения C, особенно с _malloc_dbg
функциями, включенными путем определения _CRTDBG_MAP_ALLOC
, проще найти отсутствующие или повторяющиеся вызовы _freea
. Дополнительные сведения о том, как куча управляется во время отладки, см. в разделе "Отладочная куча CRT".
Функция _freea
помечена как __declspec(noalias)
; это означает, что функция гарантировано не изменяет глобальные переменные. Дополнительные сведения см. в разделе noalias
.
Требования
Function | Обязательный заголовок |
---|---|
_freea |
<stdlib.h> и <malloc.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
Пример см. в примере _malloca
.
См. также
Распределение памяти
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin