SSブログ

C++とメモリ関連エラー [プログラマー現役続行]

私自身がC++言語で初めて開発に従事した商品はFuji Xerox DocuStation IM 200でした。1996年初めのことです。Solaris 2.3をOSとして、白黒でしたがデジタルコピー/Faxそれにペーパーユーザインタフェース(Paper User Interface)が搭載されていました。その開発で苦労したのは、やはり、メモリ管理でした。メモリーリーク、メモリ破壊、不正なメモリ解放などを検出する仕組みを開発途中から入れるために、C++のnew/delete演算子を私自身が独自に実装したものを使用することでシステム全体の安定化を図りました。

その後、C++用のメモリ管理モジュールの仕様を2000年に再設計しました。そのメモリ管理に基づくスレッドライブラリーやスレッドセーフなコレクションライブラリーの設計を同時に行い、優秀なエンジニア2名※1に実装してもらいました。作成した一連のライブラリーは、その後のデジタル複合機開発では早期にメモリ関連のトラブルを防ぐために活用されましたし、現在でも使用されています。※2

CやC++でのシステム開発では、性能を落とさずにある程度の最低のメモリ関連のチェック機構を作り込むことで、開発期間全体を通してそのチェック機構に助けられます。IM 200を開発した頃に、purifyが登場したのですが、チェック機構は非常に強力でしたが、システム全体が非常に遅くなってしまい、常時組み込んで使用することはできませんでした。

※1 一人は木南英夫さんです。
※2 よく考えてみると10年以上使われ続けるライブラリーを策定したことになります。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0