我正在测试我可以在我的计算机上制作多大的一维矢量。为此,我使用以下 MWE:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<double> vec;
const unsigned long long lim = 1E8;
for(unsigned long long i=0; i<lim; i++)
{
vec.push_back(i);
}
cout << vec.max_size() << endl; //outputs 536.870.911 on my 32-bit system
return 0;
}
如图所示,max_size()
我的std::vector
系统上可以包含 536.870.911 个元素。但是,当我运行上面的 MWE 时,我得到了错误
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
我的电脑有 2GB 内存,但 1E8 整数只占用 381MB,所以我不明白为什么会bad_alloc
出错?