The*_*oll 8 winapi memory-management portable-executable 32bit-64bit
我一直在阅读32位Windows应用程序限制为2 GB RAM,因为高2GB的寻址空间是为Windows操作系统(以及iirc,VRAM)保留的.如果在32位WinXp上使用/ 3GB标志,则最多可以使用3 GB的RAM进行寻址,但通常需要使用userva值进行调整.我听说在64位版本的Windows上,PE头中有一个大的地址识别标志和超过4 GB的RAM,应用程序可以使用所有4 GB的寻址空间进行自己的内存管理.
另一方面,我很确定当你调用windows API时,你必须在你提供的32位地址空间内调用内存位置.那么,32位大地址识别应用程序在64位环境中可以使用多少RAM呢?为什么?
谢谢.
虚拟地址空间扩展到4GB.如果不使用Address Windowing Extension API,则可以访问的最大内存量为4GB.一些空间将被操作系统用于.dll和其他类似的东西,但是你可以获得使用所有32位指针的内存.
顺便提一下,如果你不是大地址识别,所有内存指针在转换为a时都不会为负数INT_PTR
.当使用大地址感知标志时,这实际上是一个不止一些微妙错误的来源,因为指针被处理为有符号值.