C++ 如何使应用程序能够识别大地址?
我目前正在使我们的应用程序能够识别大地址。经验表明,在这样做时会出现一些意想不到的问题。我写这篇文章是为了列出需要采取的步骤 中列出的开发注意事项提供了一个良好的起点,但并不完整: 以下注意事项将有助于确保代码能够处理大于2GB的地址:C++ 如何使应用程序能够识别大地址?,c++,visual-studio,winapi,C++,Visual Studio,Winapi,我目前正在使我们的应用程序能够识别大地址。经验表明,在这样做时会出现一些意想不到的问题。我写这篇文章是为了列出需要采取的步骤 中列出的开发注意事项提供了一个良好的起点,但并不完整: 以下注意事项将有助于确保代码能够处理大于2GB的地址: 避免使用有符号指针算法(即比较和相加) 指针使用所有32位。不要将Bit31用于其他内容 一些dll将在2GB边界下加载。在这种情况下,无法使用VirtualAlloc()分配连续内存 尽可能使用GlobalMemoryStatusEx()(首选)或Globa
- 避免使用有符号指针算法(即比较和相加)
- 指针使用所有32位。不要将Bit31用于其他内容
- 一些dll将在2GB边界下加载。在这种情况下,无法使用VirtualAlloc()分配连续内存
- 尽可能使用GlobalMemoryStatusEx()(首选)或GlobalMemoryStatus()检索内存大小
因此,问题是:<强>当C++ C++ Win32本地应用程序大地址知晓时,需要完成的事情清单是什么?<强> < /P> < UL>
“消除所有指针减法”过多。单个数组中的指针工作得非常好。@Suma:指针添加不好,因为设置了
LargeAddressware
时,指针添加可能会溢出。此外:请注意此处讨论的第三方库:需要此链接器选项,/LargeAddressware只设置一次,用于链接应用程序EXE,或者也必须将其设置为链接组件DLL?@DavidM.Miller该标志似乎对DLL-没有影响。只需确保与exe一起使用的DLL确实能够处理较大的地址。