当你的应用程序开始耗尽内存时,你会怎么做? 我有一个C++图形应用程序,它对模型进行了大量的计算。有一个我追踪到CG和/或我的ATI图形卡(我百分之百肯定!!)的问题。我拥有的机器有16 GB的ram,当我使用了4.49 GB的ram(系统总使用量,应用程序仅使用~1.9GB)时,vector.resize()开始返回0个新元素,并且无法调整数组大小。为什么这么快?

当你的应用程序开始耗尽内存时,你会怎么做? 我有一个C++图形应用程序,它对模型进行了大量的计算。有一个我追踪到CG和/或我的ATI图形卡(我百分之百肯定!!)的问题。我拥有的机器有16 GB的ram,当我使用了4.49 GB的ram(系统总使用量,应用程序仅使用~1.9GB)时,vector.resize()开始返回0个新元素,并且无法调整数组大小。为什么这么快?,c++,memory,windows-7,C++,Memory,Windows 7,我将生成配置更改为x64,应用程序工作正常我将生成配置更改为x64,应用程序工作正常引发异常 当然,最好是查找并标记泄漏,但当内存不足时:异常!为了更酷,重新启动自己的应用程序作为响应。抛出异常 当然,最好是查找并标记泄漏,但当内存不足时:异常!为了更酷,请重新启动自己的应用程序作为响应。(假定为Windows) 32位Windows应用程序的用户模式内存限制在2.0 GB左右(如果设置了某些启动时参数,则限制在3.0 GB左右)。当您的应用程序使用了1.9GB的内存时,井水就干涸了 参考资料:

我将生成配置更改为x64,应用程序工作正常

我将生成配置更改为x64,应用程序工作正常

引发异常
当然,最好是查找并标记泄漏,但当内存不足时:异常!为了更酷,重新启动自己的应用程序作为响应。

抛出异常 当然,最好是查找并标记泄漏,但当内存不足时:异常!为了更酷,请重新启动自己的应用程序作为响应。

(假定为Windows)

32位Windows应用程序的用户模式内存限制在2.0 GB左右(如果设置了某些启动时参数,则限制在3.0 GB左右)。当您的应用程序使用了1.9GB的内存时,井水就干涸了

参考资料:

(假定为Windows)

32位Windows应用程序的用户模式内存限制在2.0 GB左右(如果设置了某些启动时参数,则限制在3.0 GB左右)。当您的应用程序使用了1.9GB的内存时,井水就干涸了


参考资料:

您不知道吗,32位程序只能处理2GB的RAM?实际上假设是2^32=4GB!你不知道吗,32位程序只能处理2GB的RAM?实际上假设它是2^32=4GB!这要求包装每一个
.resize()
,检查
.size()
==size\u您想要的,并且必须检查每一个
malloc()
new
是否返回NULL。这要求包装每一个
.resize()
并检查
.size()
==size\u您想要的,以及每一个
malloc()必须检查
和新建是否返回空值。确定!在VS 2010中,这仅仅是它的一半。您还必须以这种方式启动Windows,以便为用户空间保留3GB,而不是通常的2GB。执行此操作的方法与特定版本的Windows不同。请参见此处:和此处:2f00_3gb-go-in-longhorn-And-vista_3f00.aspxINTERESTING。这就是为什么我在first launch+崩溃时看到了它(在它更改了“兼容性设置”之后,它成功运行了(正如我们所说,它正在消耗5.5GB!)Ok!在VS 2010中,这仅仅是它的一半。您还必须以这种方式启动Windows,以便为用户空间保留3GB,而不是通常的2GB。执行此操作的方法与特定版本的Windows不同。请参见此处:和此处:2f00_3gb-go-in-longhorn-And-vista_3f00.aspxINTERESTING。这就是为什么我在first launch+崩溃时看到了它(在它更改了“兼容性设置”之后,它成功地运行了(正如我们所说的,它正在消耗5.5GB!)