2012-03-18 71 views
0

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

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

我发现windows API函数,如HeapAlloc \ HeapCreate,但我不确定这是要走的路。解决这个问题的最好方法是什么?

回答

1

我已经使用HeapAlloc \ HeapCreate成功之前,也为大对象(> 20Mb我相信)。但是,这是为了将对象保存在单独的堆中以调试内存问题。在最新版本的Windows中,Low fragmentation heap应该是默认值。所以我很惊讶,你让你的碎片。也许你患有这种疾病:LFH disabled?单一分配的最大规模是多少?

+0

你是如何决定堆的初始和最大尺寸的? – Leo 2012-03-19 20:50:37

0

如果你有一个内存密集型应用(分配巨大的内存块),你应该首先看看VirtualAlloc