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