0

我在win7上工作,需要使用malloc分配2个缓冲区,每个660M字节第一次分配都可以,第二次缓冲区分配失败。我的磁盘上有 670G 空闲内存 最大 malloc 大小是多少?上述问题的原因可能是什么

4

2 回答 2

2

最大有效malloc()大小是适合进程堆状态的大小。堆可以被分段(例如,有一个堆有 600M 空闲内存块,然后是 20M 已用块,然后又是 600MB 空闲块 - 尽管有 1.2GB 空闲内存,但您无法获得 650M)。

此外,AFAIK,加载 DLL 的 Windows 机制将每个库绑定到某个地址,因此内存可能已经被 DLL 碎片化。

于 2012-10-10T12:28:37.170 回答
1

你告诉你有 670G 的可用内存,但那是硬盘空间。

正在运行的程序需要 RAM 中的内存,并且您的 RAM 内存可能低于您所需的内存。因此,您在使用 malloc 分配内存时遇到错误。

于 2012-10-10T12:47:29.867 回答