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

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

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

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

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

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2015/08/25/7749163/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。