Solaris C++ コンパイラがメモリ不足で落ちる2015年08月25日 12時44分42秒

この度、Solaris の C++ コンパイラがメモリ不足で落ちる自体になった。ほぼ 2GB のメモリを割り当てた後に、コンパイラが異常終了してしまう。

コンパイラの動作と、コードを見ていると、テンプレートの処理に大量のメモリが必要になるようだ。

あまり作法良く書かれたコードでは無いので、インライン関数やテンプレートが乱用されている。インライン関数自体は害では無いのだが、インラインにするために大量のヘッダーを #include しているため、どのヘッダーを読み込んでも大量のインライン関数に遭遇し、それに加えて大量のテンプレートが散りばめられている。

ヘッダーはフィルから綺麗に書き直すのが正攻法なのだが、時間と手間的にも無理。目の前のコンパイルできないソースから処理していくしかない。単純だが、最初に行なうのは cpp ファイルの分割。なるべく、必要なヘッダー毎に組になるように分ける。その後に、徐々に分割するしか無い。