好的,我在互联网上找到了this指南和其他一些建议,建议使用Visual Studio命令提示符从VS 2010 IDE目录运行以下命令:
editbin /largeaddressaware devenv.exe
我已经运行了这个,到目前为止的所有内容似乎都能正常工作(我还没有遇到任何问题)。但是我无法找到的信息是什么负面影响,如果有的话,使Visual Studio 2010使用超过2GB的RAM? Visual Studio的构建使用最多2 GB的RAM。如果VS意味着使用超过2 GB的RAM,那么我就不必破解二进制lol。虽然我喜欢在我的裤子旁边飞行并尝试新事物而没有为最坏的情况做好准备(这是我擅长的,哈哈),我至少想知道我应该准备好应该处理什么问题。出错了。
TL; DR; :使用上面的“editbin”命令使Visual Studio 2010知道内存地址大于2 GB会有什么负面影响(如果有的话)?
答案 0 :(得分:3)
启用largeaddressaware的负面影响是应用程序可能以奇怪的方式崩溃或破坏内存。编写该程序假设它没有必须处理的指针值将是> 2GB。这可以通过微妙的方式完成。规范示例可能是计算指针之间的中点地址。
ptrMid = (ptr1 + pt2) / 2;
如果你的所有指针都是< 2GB,但如果不是,您将因溢出而得到错误的结果。
ptrMid = (0x80000000 + 0x80000004) / 2 = 0x0000002, not 0x80000002
您不仅要担心Visual Studio无法处理指针> 2GB,任何加载项也会受此影响。
在启用largeaddressaware之前,请查看此问题以获取更多必须检查的内容,请参阅此问题:What to do to make application Large Address Aware?
你真的不应该使用editbin来改变你不能控制的应用程序上的大件地址。
答案 1 :(得分:2)
阅读此discussion并检查现有标题后,看起来VS2010已经应用了此功能,至少对我的安装而言(64位win7)。如果它已编入,我认为你不必担心副作用不好。
答案 2 :(得分:0)
这似乎是设计上的。
回想一下,即使设置了/ 3GB开关,也会收到32位程序 只有2GB的地址空间,除非他们表示愿意 通过传递/ LARGEADDRESSAWARE标志来处理2GB以上的地址。
此标志在64位Windows上的含义相同。但自64位以来 Windows有一个更大的可用地址空间,它可以负担得起 为32位Windows程序提供整个4GB的地址空间 使用。这几乎是偶然在Knowledge Base article Q889654表中的“内存和CPU限制的比较”中提到的 32位和64位版本的Windows“。
换句话说,某些类别的32位程序(即那些 地址空间紧张)从64位Windows上运行中获益 机器,即使他们没有明确地利用任何机器 64位功能。
http://blogs.msdn.com/b/oldnewthing/archive/2005/06/01/423817.aspx
Editbin是一个Microsoft实用程序,因此它们基本上声称它可以正常工作。