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