我目前正在制作我们的应用程序大地址识别。经验表明,这样做有一些意想不到的陷阱。我创建这篇文章是为了完整地列出需要采取的步骤。
AMD Large Address Aware guide中列出的开发注意事项提供了一个很好的起点,但绝不是完整的:
以下注意事项有助于确保代码可以处理大于2GB的地址:
- 避免使用带符号的指针算法(即比较和添加)
- 指针使用全部32位。不要将Bit31用于别的东西。
- 某些dll将在2GB边界下加载。在这种情况下,VirtualAlloc()不能分配连续的内存。
- 尽可能使用GlobalMemoryStatusEx()(首选)或GlobalMemoryStatus()来检索内存大小。
因此,问题是:在制作C ++ Win32本机应用程序大地址感知时需要完成的完整列表是什么?
答案 0 :(得分:24)