在Windows 7 64bit上,32位程序可以访问多少地址空间?

时间:2011-05-12 15:17:49

标签: windows 32bit-64bit

当使用LARGEADDRESSAWARE标志时,我的32位程序可以访问4GB的地址空间,还是只有3GB的地址空间? 为什么呢?

4 个答案:

答案 0 :(得分:3)

设置了LARGEADDRESSAWARE的32位进程可以在64位Windows上处理4GB。它可以这样做,因为这是微软的优秀工程师如何实现它。

记录在案here

答案 1 :(得分:2)

也许是anwser is there

一个32位进程将访问2GB RAM,带有LARGEADDRESSAWARE标志,它达到4GB

答案 2 :(得分:0)

答案 3 :(得分:0)

在大多数操作系统中,您的32位空间被分解为您编程(用户代码)可以分配和使用的部分,以及内核拥有的部分。除非您正在编写自己的OS /内核,请使用系统API(例如malloc / free,C / C ++中的new / delete)或python中的底层管理,java为您管理内存分配。

但是,如果您“内存不足”,则会开始考虑错误

  1. 我在某个地方有泄漏吗?你不是 free'ing 每个指针你 malloc'ing 诸如valgrind之类的大量工具可以帮助找到这些工具。
  2. 我是否需要重新设计我的程序才能使用更少的内存?你是否在保存从python或java中的数组中的大文件中读取的每一行数据。寻找你可以扔掉的东西