3次元配列使用でStackOverflowException発生
C++で3次元配列を使用したいのですが,強制終了させられてしまいます.
おそらくスタックオーバーフローというものが起こっているようなのですが,
double L[10][500][30],a[10][500][30],b[10][500][30],…
というふうに,
10*500*30の要素数の配列を全部で10種類使用するのはやはりメモリ的に無理があるのでしょうか?
コード作成はVisual Studio 2008,コンパイラはgccで実行しています.
あまりこの要素数は減らしたくないのですが,
何か解決策があれば教えてください.
------------------------------------------------------------
環境:WinXP, メモリ1GB, Pentium4
ちなみに,いくつか対策を講じて見ましたが,エラーが出てしまった例を一応下に載せておきます.
<VisualStudioでデバッグ有りのコンパイル>
エラー."System.StackOverflowException' のハンドルされていない例外が発生しました"
<new()を使用した配列の動的確保>
double ***L, ***a, ・・・;
L = new double**[30];// double型30個分の領域を動的確保
a = new double**[30];
…
for(k=0; k<=30; k++){
L[k] = new double*[500];// double型500個分の領域を動的確保
a[k] = new double*[500];
・・・}
for(k=0; k<=30; k++){
for(j=0;j<=500; j++){
☆L[j][k] = new double[10];// double型10個分の領域を動的確保
a[j][k] = new double[10];
・・・}}
☆:エラー発生."保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。"
お礼
まさに知りたいことで、勉強になります。 スタックとヒープがごっちゃになっていました。 回答いただいたようなことだったんですね。 ありがとうございました。