_freea

释放或释放内存块。

void _freea( 
   void *memblock 
);

参数

  • memblock
    此前分配的内存块已释放。

返回值

无。

备注

_freea函数释放由 _malloca的调用此前分配的内存块 (memblock)。_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

要求

功能

必需的头

_freea

stdlib.h 和 malloc.h

有关更多兼容性信息,请参见中介绍的 兼容性

示例

_malloca参见示例。

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

内存分配

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin