帰った。

今さっき帰った。今は1時ちょい前。
そういや昨日は何もしなかったなー。GIFアニメを作ってただけじゃ。
あ、あと去年の卒研生で今は他の大学の院に行った子からメールが来た。卒研時に作ったプログラムを今の環境で動かすとエラーになると。文面を見る限り、配列数を大きくした時に起きる例のスタックサイズの上限によるセグメンテーション違反だったので対応策を2つほど。
一つ目は、ぼくもあまり理解できていないが、C言語では変数を静的メモリとして確保すればこれはスタックメモリを用いない変数となる。なので、スタックサイズを気にしなくてよい。実際は
static int a;
みたいに変数定義の頭に『static』とすれば、静的にメモリを確保できる。なんだかどこかで、この『static』はグローバルとして使う場合とローカルで使う場合で意味が違うようなことも書かれていたが、とりあえず。
二つ目は、スタックサイズの上限設定を大きくしてしまおうというもの。スタックは元々の意味とは違うが、一時的にデータやアドレスを保存するために使われるらしいので、実メモリのサイズよりは当然小さく設定されるようだ。これをいじってやろうということ。実際にはコマンドライン
$ ulimit -s unlimited
とすればOK。メモリがある限りスタックが確保される。これはマックのG5ではなんだか制限があって、一定値以上に出来ないようになっていて、昔困っていた記憶があるな。
そうそう、一つ目の方法で試した時になぜだか解決できない場合があった。で、それが今日になってどうして出来なかったのかがわかった。そのプログラムは、Cで書かれてはいるんだけどフォートランのグラフ表示ライブラリであるPGPLOTを使っていたから、コンパイル自体はg77でやってたんだよ。きっとここがいけなくて、他にもgccコンパイルする方法もあったからそっちでやればできたはず。ま、今更だけど。
あー、久々にコンピュータ関連のこと書いたなー。きっといろいろ間違ってるんだろうなぁ。