【发布时间】:2011-03-07 18:37:57
【问题描述】:
我目前正在制作我们的应用程序大地址感知。经验表明,这样做时会遇到一些意想不到的问题。我创建这篇文章是为了列出需要采取的步骤。
AMD Large Address Aware guide 中列出的开发注意事项提供了一个很好的起点,但绝不是完整的:
以下注意事项将有助于确保代码可以处理大于 2GB 的地址:
- 避免使用有符号指针算术(即比较和相加)
- 指针使用全部 32 位。不要将 Bit31 用于其他用途。
- 某些 dll 将在 2GB 边界下加载。在这种情况下,无法使用 VirtualAlloc() 分配连续的内存。
- 尽可能使用 GlobalMemoryStatusEx()(首选)或 GlobalMemoryStatus() 来检索内存大小。
因此,问题是:在制作 C++ Win32 本机应用程序大地址感知时需要做的事情的完整列表是什么?
【问题讨论】:
标签: c++ visual-studio winapi