May 15, 2008

[自分メモ]C言語-動的配列確保?

gccでは配列の要素数を変数で指定することができます。
すごく簡単な例として
int main(int argc, char **argv){
  char darray[atoi(argv[1])];
  return 0;
}
みたいなコードが書けます。

ローカル変数ならばメモリの解放漏れの心配も無いし、これってすごく便利なのでは?と思ったのですが、そこは孔明の罠。

手元のマシンで実験してみたところ、要素数が多すぎてスタック領域の確保に失敗した時に問答無用でSegmentation faultになってしまいます。

スタック領域からメモリを確保する関数でallocaというのもあるのですが、こちらも同様の問題を抱えているようです。

matssaku at 06:19│Comments(0)TrackBack(0)clip!C 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔