【发布时间】:2010-08-10 17:36:37
【问题描述】:
我有一个应用程序使用“new”分配内存,并在代码的某些部分使用“delete”释放它们。 问题是每当它超过系统的内存限制(比如说 2GB)时,Windows 就会向进程发送一个 Kill 信号。 我认为这不常见,因为它应该使用交换空间(我认为在 Windows 中它被称为虚拟内存),对吧? 我的应用程序是用 C++/Visual Studio 编写的。
【问题讨论】:
-
AFAIK,32 位进程在 Windows 中不能使用超过 2GB。
-
如果您需要超过 2GB 的空间,请使用 64 位版本的 windows 并将您的程序构建为 64 位目标。这是 32 位应用程序的限制。
-
我的进程中没有使用 2GB 的 RAM。 Windows 已经使用了大约 1GB。我正在使用大约 1GB ......但总的来说它超过了内存。所以32位问题不是这样的。
-
假设您的页面文件足够大,理论上您的进程最多可以分配 2GB,而不管安装或可用的 RAM 有多少。
-
另外,是什么让您认为 Windows 没有使用其页面文件? (虚拟内存总是使用,与交换空间或页面文件不同)
标签: c++ windows visual-studio memory-management virtual-memory