C ++ STL列表崩溃的数字超过1 000 000 000

时间:2012-02-24 15:29:46

标签: c++ list stl

当我尝试调整列表大小时,程序崩溃了......看看那段代码,尝试输入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 ++)

1 个答案:

答案 0 :(得分:12)

由于“可用内存”是一个稍微变幻无常的概念,l.max_size()会返回最大硬盘。你的“崩溃”很可能是一个未被捕获的std::bad_alloc,你在内存不足时会发现它。