Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Освобождает блок памяти.
Синтаксис
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