Windows桌面应用程序(1-3-1-6th) 虚拟地址空间

默认情况下,64位基于Microsoft Windows的应用程序具有几TB的用户模式地址空间。有关精确值,请参阅Windows和Windows Server版本的内存限制。但是,应用程序可以指定系统应为应用程序分配低于2千兆字节的所有内存。如果满足以下条件,则此功能对64位应用程序有益:

  • 2 GB的地址空间就足够了。
  • 代码有许多指针截断警告。
  • 指针和整数是自由混合的。
  • 该代码具有使用32位数据类型的多态性。

所有指针仍然是64位指针,但系统确保每个内存分配都低于2 GB限制,因此如果应用程序截断指针,则不会丢失重要数据。指针可以截断为32位值,然后通过符号扩展或零扩展扩展为64位值。

要指定此内存限制,请使用/ LARGEADDRESSAWARE:NO链接器选项。请注意,对于ARM64二进制文件,/ LARGEADDRESSAWARE:NO将被忽略。但请注意,使用此选项时可能会出现问题。如果您构建使用此选项的DLL并且DLL由不使用此选项的应用程序调用,则DLL可能会截断其高32位有效的64位指针。这可能导致应用程序失败而没有任何警告


原文链接:Virtual Address Space

猜你喜欢

转载自blog.csdn.net/qq_37422196/article/details/81235360
今日推荐