我在win7上工作,需要使用malloc分配2个缓冲区,每个缓冲区为660M字节 第一次分配没问题,secon缓冲区分配失败。 我在磁盘上有670G免费内存 什么是最大malloc大小?可能是上述问题的原因
答案 0 :(得分:1)
最大有效malloc()
大小适合进程堆的状态。堆可以是碎片的(所以,例如,有一个600M可用内存块的堆,然后20M使用了块,然后再次使用600MB空闲块 - 你只能得到650M,尽管有1.2GB的可用内存)。
此外,AFAIK,Windows加载DLL的机制将每个库绑定到某个地址,因此内存可能已被DLL碎片化。
答案 1 :(得分:1)
你告诉你有670G的可用内存,但那是硬盘空间。
正在运行的程序需要 RAM 中的内存,可能您的RAM内存低于您的需求。因此,您正在使用malloc来分配内存时出错。