スタックオーバーフロー
http://www04.neo-zion.jp/tips/c/stack-over-flow.html
無保証、と但し書きがしてあるのでアレコレいうのはヤボかも、と思いますが、友人が間違えて覚えちゃうとナニなので突っ込ませていただきます。
スタックオーバーフローは、スタック領域の制限を越えたから出るのであって
、Windowsだと出て、Linuxだと出ない、というものではないです。
(上記のURLの説明は、そういう風に読めました。)
Windowsで動かなくてLinuxで動く理由は、スタック領域のサイズは環境やコンパイラによって異なるため、Linuxではたまたまスタック領域のサイズが大きかった、という事だと思われます。*1
スタック領域以上の変数を一時的に確保したい場合、mallocしてヒープ領域にとるのが一般的です。
例にあるように、staticで宣言したり、もしくはグローバル変数にしちゃうとかすれば、ヒープに確保されるので動きますが、うーん、、、ってな対処方法ですな。
以上、突っ込みでした。