SIZE_TWINAPI HeapCompact(
_In_ HANDLE hHeap,
_In_ DWORD dwFlags
);
HeapCompact函数的作用是整理私有堆,合并相邻的空闲块,避免产生大量的小的内存碎片。这样来看,这个函数的作用很关键。但扫一眼MSDN,就会发现HeapCompact 函数其实主要用于调试。因为,通常系统会在调用HeapFree 函数时自动整理私有堆。
在一些高级调试工具中,可以设置 Disable heap coalesceon free 全局标志,这样系统就不会自动整理私有堆了,此时可以调用 HeapCompact 函数手动整理私有堆。
所以,HeapCompact 函数并不像想象中的那么“常用”。