当我尝试调整列表大小时,程序崩溃了...查看该代码,尝试输入 1,000,000,000 (10^9)...在我的 Windows 7 x64 上不起作用。
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;
int main(int argc, char *argv[])
{
list<long long> l;
long long n;
cin>>n;
cout<<l.max_size()<<endl;
//uncomment 1 or 2
//l.resize(n,l.size()+1); //1st try
/*for (long long i=0; i<n; i++) //2nd try
l.push_back(n);*/
//system("PAUSE"); // uncomment if needed
return 0;
}
最大尺寸超过 4*10^9,但仍然不起作用...我正在使用最新的 MinGW (G++)
最佳答案
由于“可用内存”是一个稍微变化无常的概念,l.max_size()
返回一个硬最大值。您的“崩溃”很可能是未捕获的 std::bad_alloc
,这是您在内存不足时预料到的。
关于C++ STL 列表崩溃,数字超过 1 000 000 000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433335/