HeapCompact函数尝试压缩指定的堆。它通过合并相邻的空闲内存块来压缩堆,并且消除大的可用内存块。
UINT HeapCompact(
HANDLE 【hHeap】, | //处理堆以进行压缩 |
DWORD 【dwFlags中】 | //在功能操作期间控制堆访问的位标志 |
); |
参数
【hHeap】
处理堆的功能将尝试压缩。
【dwFlags中】
在功能操作期间控制堆访问的一组位标志。以下位标志有意义:
值 | 含义 |
HEAP_NO_SERIALIZE | 如果设置此标志,则HeapCompact函数访问堆时,堆访问不会被序列化;堆访问不是互斥的。只能在有限的特定情况下设置此标志是安全的。有关这些情况和堆序列化的一般讨论,请参阅HeapCreate的备注部分。 如果这个标志是清楚的,堆访问被序列化,而HeapCompact访问堆;堆访问是互斥的。这是安全和简单的默认条件。 |
返回值
如果函数成功,则返回值是堆中最大提交空闲块的大小(以字节为单位)。这是一个无符号的整数值。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
在堆中绝对没有可用空间的情况下,函数返回值为零,GetLastError返回值NO_ERROR。
备注
不能保证应用程序可以成功分配HeapCompact返回的大小的内存块。其他线程或提交阈值可能会阻止此类分配。
也可以看看