Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;应用程序超出内存,但没有';不要使用虚拟内存_C++_Windows_Visual Studio_Memory Management_Virtual Memory - Fatal编程技术网

C++ C++;应用程序超出内存,但没有';不要使用虚拟内存

C++ C++;应用程序超出内存,但没有';不要使用虚拟内存,c++,windows,visual-studio,memory-management,virtual-memory,C++,Windows,Visual Studio,Memory Management,Virtual Memory,我有一个应用程序,它使用“new”分配内存,并在代码的某些部分使用“delete”释放内存。 问题是,每当它超过系统的内存限制(比如2GB)时,Windows就会向进程发送一个终止信号。 我认为这并不常见,因为它应该使用交换空间(我认为在windows中它被称为虚拟内存),对吗? 我的应用程序是用C++/Visual Studio编写的。Windows不使用信号。内存不足时,应该会出现std::badalloc异常。未捕获时,将自动运行terminate()函数。异常在输出窗口中可见。窗口不使用

我有一个应用程序,它使用“new”分配内存,并在代码的某些部分使用“delete”释放内存。 问题是,每当它超过系统的内存限制(比如2GB)时,Windows就会向进程发送一个终止信号。 我认为这并不常见,因为它应该使用交换空间(我认为在windows中它被称为虚拟内存),对吗?
我的应用程序是用C++/Visual Studio编写的。

Windows不使用信号。内存不足时,应该会出现std::badalloc异常。未捕获时,将自动运行terminate()函数。异常在输出窗口中可见。

窗口不使用信号。内存不足时,应该会出现std::badalloc异常。未捕获时,将自动运行terminate()函数。异常在输出窗口中可见。

;这是32位windows应用程序的绝对最大值。除此之外,您还需要使用64位版本的windows

这是一个很大的记忆。也许你可以考虑把你的应用程序分成多个进程并在它们之间进行通信。这是32位windows应用程序的绝对最大值。除此之外,您还需要使用64位版本的windows


这是一个很大的记忆。也许你可以考虑把你的应用程序分成多个进程并在它们之间进行通信。

我没有仔细地看这个,但是你可以在这里找到你想要的答案:


我还没有仔细研究过这个问题,但你可以在这里找到你想要的答案:


操作系统不会杀死你的应用程序,而未处理的异常会杀死你的应用程序。您需要使用perfmon检查应用程序,并查看这些计数器、工作集、虚拟字节和专用字节。当保留字节接近2GB时,将出现异常。因此,您的提交字节和RAM字节要少得多


故事的寓意是,对于32位进程,当保留字节接近2GB时,不要尝试分配。

操作系统不会杀死你的应用程序,一个未处理的异常会杀死你的应用程序。您需要使用perfmon检查应用程序,并查看这些计数器、工作集、虚拟字节和专用字节。当保留字节接近2GB时,将出现异常。因此,您的提交字节和RAM字节要少得多


故事的寓意是,对于32位进程,当保留字节接近2GB时,不要尝试分配。

好的,32位进程在Windows中的使用量不能超过2GB。如果需要超过2GB,请使用64位版本的Windows,并将程序构建为64位目标。这是32位应用程序的限制。我的进程中没有使用2GB的RAM。Windows已经使用了大约1GB的内存。我正在使用大约1GB。。。但总的来说,它超过了记忆。因此,32位问题并非如此。假设您的页面文件足够大,理论上,您的进程可以分配高达2GB的内存,而不考虑已安装或可用的RAM数量。还有,是什么让您认为Windows没有使用其页面文件?(始终使用虚拟内存,这与交换空间或页面文件不同)好的,32位进程在Windows中使用的内存不能超过2GB。如果需要超过2GB的内存,请使用64位版本的Windows,并将程序构建为64位目标。这是32位应用程序的限制。我的进程中没有使用2GB的RAM。Windows已经使用了大约1GB的内存。我正在使用大约1GB。。。但总的来说,它超过了记忆。因此,32位问题并非如此。假设您的页面文件足够大,理论上,您的进程可以分配高达2GB的内存,而不考虑已安装或可用的RAM数量。还有,是什么让您认为Windows没有使用其页面文件?(始终使用虚拟内存,与交换空间或页面文件不同)