Windows允许您通过在PE标头(/LARGEADDRESSAWARE
)中设置标志,将地址空间的使用限制为32位分辨率。详细说明:当设置时,此标志有效地模拟32位虚拟地址空间环境(映像加载在/assignments return-addresss<=0xFFFFFFFF)
Linux有类似的功能吗?
在x86-64上以32位空间分配内存可以通过使用MAP_32BIT
标志执行mmap(2)
来完成。
/LARGEADDRESSAWARE
允许为32位Windows应用程序扩展2到4 GB的地址空间。否则,Windows上的32位应用程序无法访问这些地址。Linux从早期就可以访问它们,所以不需要/LARGEADRSSAWARE
链接标志。