スタック領域を増やそう

最近のPCには2GBや8GBといった大量のメモリが搭載されていて、画像を大量に扱うようなシミュレーションも楽にこなすことができるようになりました。

が、実際に大量のメモリを使うにはmalloc()等でヒープ領域にメモリを確保してやる必要があります。グローバルな配列などでスタック領域に100MBとか取ろうとするとSegmentation Faultが出るはずです。 Ubuntu等のデフォルト設定ではスタック領域が8MBしかないんですよね。

というわけでmalloc()使ったプログラムに書き換えるのが面倒な人のためのメモ。

Linuxでスタック領域を増やすにはulimitコマンドを使います。

ulimit -s

で現在のスタック領域の大きさが、

ulimit -s 数値

でスタックの大きさが設定できます。ここにunlimitedと指定してやると無制限になります。ようするに

ulimit -s unlimited

とやればグローバル変数で大きな配列を宣言したりできるわけです。ちなみにコマンドを打ったターミナル上でしか有効にならないので注意。

まあ、自分は最近Javaしか使ってないんで関係なかったりしますが。