画像のプログラムを実行して、エラーのタイミングでループ変数の中身を見て検証しました。
結果
SUB1:21845
SUB2:16383
SUB3:8191
SUB4:16383
SUB5:16384
このことから考えられるのは
・ローカル変数はスタック上に確保される
・ローカル配列はアドレスのみスタックに確保され、本体はヒープに確保される。(配列のサイズが大きいとOut of memoryになる)
・1つの変数あたりで確保されるメモリの量はおそらく型によって変わらない
これはキツい。せめてFFTがCOPYやFILLみたいに要素数指定出来たらグローバル変数でなんとか出来たのにな…