Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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++_Windows_Memory - Fatal编程技术网

C++ 进程的未提交内存

C++ 进程的未提交内存,c++,windows,memory,C++,Windows,Memory,我的32位进程(没有\3G标志)的大小超过2GB(私有类型),并且只有一小部分(大约400MB)被提交 这会在尝试分配新内存时导致“内存不足”问题 我试图阅读有关windows内存结构的内容,但我仍然不确定是什么原因导致了问题。据我所知,使用“new”命令(在c++中)分配的任何内存都显示为提交内存。 是什么造成了这种局面?我应该寻找什么来解决它呢?(我不认为这是常规内存泄漏,或者提交的内存也很大) 下面是来自vmmap的一些奇数地址:拥有大量线程是一种方法,只有前2页被提交,其余的1 MB堆栈

我的32位进程(没有\3G标志)的大小超过2GB(私有类型),并且只有一小部分(大约400MB)被提交

这会在尝试分配新内存时导致“内存不足”问题

我试图阅读有关windows内存结构的内容,但我仍然不确定是什么原因导致了问题。据我所知,使用“new”命令(在c++中)分配的任何内存都显示为提交内存。 是什么造成了这种局面?我应该寻找什么来解决它呢?(我不认为这是常规内存泄漏,或者提交的内存也很大)


下面是来自vmmap的一些奇数地址:

拥有大量线程是一种方法,只有前2页被提交,其余的1 MB堆栈被保留。但这只是一个没有任何事实的盲目猜测游戏,请使用SysInternals的VMMap实用程序获取一些事实。我提供的描述基于VMMap数据。还有什么其他数据可以帮助识别问题?此外,您的理解是有缺陷的-完全有可能分配未使用
new
提交的内存-例如,一个大的空数组。除非您向数组的每个页面写入内容,否则它不会被提交。@Luaan实际上,在这种情况下,内存是提交的,但物理内存在您访问它之前不会被分配。我从vmmap中添加了一些数据,特别是在“大小”上显示大数字,“提交”上显示小数字的区域。它们不属于“线程堆栈”。我还可以做些什么来获得更多的情况信息?