1

コンピューターで 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 しか占有しないので、エラーが発生する理由がわかりません。

4

1 に答える 1