我们需要将其中一个可执行文件与此标志链接,因为它使用大量内存.
但为什么要给一个EXE文件特殊处理.为什么不标准化/ LARGEADDRESSAWARE?
所以问题是:即使你不需要它,使用/ LARGEADDRESSAWARE也有什么问题.为什么不将它用作所有EXE文件的标准?
我想将我的应用程序切换到LARGEADDRESSAWARE.需要注意的一个问题是指针算法,因为指针差异不能再表示为带符号32b.
有没有办法如何在大型C++项目中自动查找指针减法的所有实例?
如果没有,是否有一些"尽力而为"的手动或半自动方法如何实现这一目标?
假设我有一个使用LARGEADDRESSAWARE链接器标志集构建的DLL.现在我有一个动态链接到这个DLL的应用程序.这是否使我的应用程序LARGEADDRESSAWARE?
如果没有,那么为任何DLL设置此标志是否有意义?
我想使用一个长整数,当设置MSB时它将被解释为数字,否则它将被解释为指针.那么这项工作还是会遇到C或C++中的问题?
这是在64位系统上.
编辑清晰和更好的描述.
我在具有16GB RAM的PC上运行Windows-7-64.我启动机器并启动Visual Studio 2015.我也启动资源监视器,它告诉我我的内存安排如下:
硬件预留:116MB使用中:2,917 MB修改:79MB待机:2,360MB免费:10,912MB
然后我执行这个程序,我正在调试模式下开发.该程序尝试malloc()1,292,000,000字节并失败.这是在程序开始运行时.它没有事先做任何malloc()/ free()操作.如果我在发布模式下运行相同的程序,那么它会成功.
知道如何解决这个问题吗?