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

标签 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++)

最佳答案

由于“可用内存”是一个稍微变化无常的概念,l.max_size() 返回一个硬最大值。您的“崩溃”很可能是未捕获的 std::bad_alloc,这是您在内存不足时预料到的。

关于C++ STL 列表崩溃,数字超过 1 000 000 000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433335/

相关文章:

C++ 通过引用局部变量传递

r - 将相同数据帧的列表熔化到 R 中的一个数据帧

java - 数据库行读入对象列表

Python:将列表列表插入另一个列表列表

c++ - Qt Creator session 管理器错误?

c++ - 删除文件夹和所有文件/子目录

c++ - 在 C++ 中,如何引用不同头文件中的函数?

c++ - 在迭代 vector 时附加到 vector ?

c++ - 创建空 vector 以将值插入以后

c++ - 不可变的 C++ 容器类