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

noi*_*cat 0 c++ stl list

当我尝试调整列表大小时程序崩溃...看看那个代码,尝试输入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;
}
Run Code Online (Sandbox Code Playgroud)

最大尺寸超过4*10 ^ 9,但仍然无法工作...我使用最新的MinGW(G ++)

MSa*_*ers 12

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