堆分离以解决内存碎片问题

时间:2012-03-18 19:41:41

标签: c++ visual-studio-2010 memory-management

我有一个内存密集型应用程序加载和卸载由于内存分配失败导致崩溃的大图像。

我想尝试堆分离方法来解决这个问题。为图像设置一个区域,为所有其他区域设置另一个区域,这些区域往往是小对象。

我发现了Windows API函数,例如HeapAlloc \ HeapCreate,但我不确定这是不行的方法。解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

我在成功之前使用过HeapAlloc \ HeapCreate,也用于大型对象(我相信> 20Mb)。但这是为了将对象保存在单独的堆中以调试内存问题。在最新版本的Windows中,Low fragmentation heap应该是默认值。所以我很惊讶你得到你的碎片。也许你会受此影响:LFH disabled?单个分配的最大大小是多少?

答案 1 :(得分:0)

如果你有一个内存密集型应用程序(分配大量内存块),你一定要先看VirtualAlloc