3次元と2次元のサイズがarray[40000][40000]
以上の大規模な計算プログラムを実行したいのですが、このコードは私の問題を少し説明することができます。コンパイルのメモリを増やす方法、またはプログラムの実行時にコンパイラのメモリを増やす方法(削除する) vector
ように、コンテンツの動的割り当てを使用する(したがって、スタックがオーバーフローしない)配列の最大サイズは2次元C++で
#include<iostream>
#include<cstdlib>
#include<vector>
using namespace std;
int main(){
float array[40000][40000];
//vector< vector<double> > array(1000,1000);
cout<<"bingo"<<endl;
return 0;
}
通常、配列を含むローカル変数がスタックに配置されます。スタックは限られたリソースですが、Visual Studioコンパイラを使用するWindowsでは、デフォルトのスタックサイズは1メガバイトです。あなたの配列(4バイトの 'float'を仮定)はほぼ6 ** GIGA **バイト(40000 * 40000 * 4)です。解決策はベクトルを使用することです、なぜあなたはそれをコメントアウトしましたか?おそらくあなたが必要とするのは[良いstd :: vector'リファレンス](http://en.cppreference.com/w/cpp/container/vector)ですか?特に[そのコンストラクタ](http://en.cppreference.com/w/cpp/container/vector/vector)について?十分なメモリがあると仮定します。 –
あなたはあなたの問題(他の大きすぎる配列)を説明することができますか? –
「同じ問題があるので」いいえ、別の**問題です。 –