是否可以压缩VC ++运行时堆?

时间:2010-03-10 10:08:37

标签: c++ visual-c++ memory-management runtime heap

对于Visual C ++运行时堆,我可以与HeapCompact()具有相同的效果吗?我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

IIRC并非没有编写自己的内存管理器。这也是一项非常重要的工作,特别是如果你希望做的不仅仅是将相邻的较小的空内存块组合成更大的内存块。

答案 1 :(得分:2)

您可以使用_get_heap_handle获取CRT堆的HANDLE,然后在其上调用HeapCompact。不确定这是否支持/稳定,因为我自己没有尝试过。我想你会想要在序列化模式下调用HeapCompact以使其有效。

如果您要解决这个问题,只需在句柄上调用HeapSetInformation(根据_get_heap_handle上的MDSN文档),让内置的LFH为您处理压缩。