Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Освобождает блок памяти.
Синтаксис
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