增大可用内存
注意
这种方式提高了内存的使用上限,作用比较明显,但是不是合理的做法,这样只是延迟了内存不足而导致的奔溃。
为什么 32 位程序只能使用最大 2GB 内存?
32 位寻址空间只有 4GB 大小,于是 32 位应用程序进程最大只能用到 4GB 的内存。然而,除了应用程序本身要用内存,操作系统内核也需要使用。应用程序使用的内存空间分为用户空间和内核空间,每个 32 位程序的用户空间可独享前 2GB 空间(指针值为正数),而内核空间为所有进程共享 2GB 空间(指针值为负数)。所以,32 位应用程序实际能够访问的内存地址空间最多只有 2GB。
设置
那么怎样让程序使用更多的内存呢?
安装时注意勾选红框对应的模块
编辑一个程序使之声明支持大于 2GB 内存的命令是:
1 | editbin /largeaddressaware xhschool.exe |
其中,xhschool.exe
是我们准备修改的程序,可以使用相对路径或绝对路径(如果路径中出现空格记得带引号)。
验证这个程序是否改好了的命令是:
1 | dumpbin /headers xhschool.exe | more |
注意到 FILE HEADER VALUES
块的倒数第二行多出了 Application can handle large (>2GB) addresses
,就说明成功了。
找到安装路径
在VS的安装路径下搜索editbin.exe
比如我的
D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx86\x86
添加到环境变量中
重启VS
那么怎么让程序生成时自动进行上面的操作呢?
项目右键属性
=>生成事件
=>生成后事件命令行
添加如下命令
1 | editbin.exe /largeaddressaware xhschool.exe |