if文の条件式に関数を入れるとどうなるか

f:id:sattamassagana:20150615223824j:plain

スタックオーバーフロー

通常、プログラムの実行単位ごとにスタックメモリというメモリ領域が割り当てられている。スタックメモリとはそのタスクや関数内だけで使われる変数やアドレス情報を置いておくためのメモリ領域である。

 タスクを終了したり、関数から抜ければスタックの内容も破棄される。

 if文やfor文の条件式に関数を入れていた場合どんどんスタックが積まれていくことになる。スタックポインタは割り当てられたスタックメモリの範囲を超えたところになってしまう。

 このようにしてプログラムは不安定な動作を引き起こす。スタックオーバーフローという。