7 c++ heap memory-management visual-c++
我使用malloc来分配内存和内存要求都大于1GB.程序崩溃......
我想问一下这个问题是否可以解决?如果是的话怎么样?
我的RAM大小为3GB,使用32位Windows操作系统并使用vc ++编程
Ben*_*Ben 13
每进程内存限制为2GB(除非您使用Windows/3GB开关).但是,您可能会遇到内存碎片.当内存碎片化(使用VMMap可视化)时,您将无法分配大的连续块.你的选择是:
在 32 位 Windows 操作系统上,每个进程获得 4 GB 虚拟地址空间,其中 2 GB 可供用户使用,2 GB 可供内核使用。因此,无论进行什么分配,都应该在这 2 GB 空间内。请注意,这 2 GB 包含其他内容,例如应用程序加载的其他 dll,因此该内存是碎片化的。当您执行 malloc() 时,由于 malloc 保证它返回一个连续的内存块,因此 CRT 将尝试查找可能不可用的 1 GB 连续空闲内存,因此 malloc() 失败。解决此问题的一种方法是使用内存映射文件并仅将所需内存的一部分映射到虚拟地址空间中。