gpt4 book ai didi

winapi - IMAGE_FILE_LARGE_ADDRESS_AWARE 和 3GB 操作系统切换

转载 作者:IT王子 更新时间:2023-10-28 23:30:18 35 4
gpt4 key购买 nike

如果 Windows 应用程序在图像头中设置了 IMAGE_FILE_LARGE_ADDRESS_AWARE(通过/LARGEADDRESSAWARE 编译器标志),这通常允许 32 位应用程序使用超过 2GB 的内存(仅限如果 32 位操作系统在 boot.ini 中设置了 3GB 开关,则有意义)。见 MSDN article /3GB了解更多信息。

我的问题是,如果您在没有设置 3GB 开关的系统上运行此应用程序会发生什么。它只是被忽略了吗?还是应用程序会尝试使用 3GB 堆并出现内存不足错误,因为用户空间只有 2GB 可用?

我一直听说 LARGEADDRESSAWARE 开关对于 2GB 用户空间系统被忽略,但找不到任何有关此的官方 Microsoft 文档。

提前致谢。

最佳答案

基本上 IMAGE_FILE_LARGE_ADDRESS_AWARE 告诉系统,“我知道设置高位的地址不是负数,并且可以处理它们”。如果系统准备提供 2GB 以上的用户模式地址,那么它会提供。如果系统不准备提供这些地址(即,没有/3GB 设置的 32 位 Windows 操作系统),则该进程无论如何都无法获取这些地址 - 但不会造成任何伤害。

还请注意,如果图像设置了 IMAGE_FILE_LARGE_ADDRESS_AWARE 位,它将在不支持(或不需要)/3GB 开关的 Win64 系统上访问超过 2GB 的地址空间。 32 位应用程序将获得接近 4GB 的地址空间,而 64 位应用程序将获得巨大的地址空间 - 7TB 到 8TB,具体取决于平台(64 位版本默认设置该位)。

http://msdn.microsoft.com/en-us/library/aa366778.aspx#memory_limits

关于winapi - IMAGE_FILE_LARGE_ADDRESS_AWARE 和 3GB 操作系统切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586826/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com