コンピューターで 1D ベクトルを作成できる大きさをテストしています。このために、次の 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;
}
示されているように、システムに 536.870.911 要素を含めることができることがわかりますmax_size()
。std::vector
ただし、上記の MWE を実行すると、エラーが発生します。
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
bad_alloc
私のコンピューターには 2GB の RAM がありますが、1E8 整数は 381MB しか占有しないので、エラーが発生する理由がわかりません。