我在win7上工作,需要使用malloc分配2个缓冲区,每个缓冲区为660M字节第一个分配正常,秒缓冲区分配失败。我的磁盘上有 670G 免费内存什么是最大马洛克大小?上述问题的原因可能是什么
最大有效malloc()
大小是适合进程堆的状态。堆可以分段(因此,例如,有一个堆具有 600M 可用内存块,然后是 20M 已使用块,然后是 600MB 可用块 - 您只是无法获得 650M,尽管有 1.2GB 的可用内存)。
此外,AFAIK,Windows加载DLL的机制将每个库绑定到某个地址,因此内存可能已经被DLL碎片化。
您说您有 670G 可用内存,但那是硬盘空间。
正在运行的程序需要 RAM 中的内存,并且您的 RAM 内存可能低于您需要的内存。因此,您在使用 malloc 分配内存时出错。