主に自分が忘れない用。
こう書くと格好いい感じだけど、mallocしてるだけである。ヒーブ領域よりもスタック領域の方がでかいらしいので、プログラムの頭で、double Hoge[NN]とかして、そんな沢山配列切れないよって言われたらmallocとか、極めていい加減な理由で使ってます。
ちゃんとfreeしときゃいいんだよ、freeしときゃ。そしてmalloc使ってこの問題が解決されてしまった事例を目の当たりにして、そのときは笑った。
今は本当に動的に配列を切らないといけないからなんだけどさ。
あとあれだ、stdlib.hが必要らしい。
#include <stdlib.h> #define MM 100 #define NN 10000 int main () { double** Hoge; int i; /* 配列切る */ Hoge = (double**) malloc (MM*sizeof(double*)); for (i = 0; i < MM; i++) Hoge[i] = (double*) malloc (NN*sizeof(double)); /* Hoge[MM][NN]を使うプログラム */ /* メモリ解放する */ for (i = 0; i < MM; i++) free (Hoge[i]); free (Hoge); return 0; }
こんなウンコサンプルよりも、
の方にとても詳しく載ってます。