Delphiをしてると、C言語と違いあまりメモリの割り当て・開放を意識しなくてもプログラムを組むことが出来ます。
しかし、そのまま長い間慣れてしまうと、今度は複雑なプログラムを組んだ時に、うっかり開放を忘れてしまうことがよくあるんですね。。
あと、メモリ割り当ての性質をあまり理解できていなかったり。

配列を含む構造型を定義したとき、すでに配列に長さが与えられていたとして、それにZeroMemory関数を実行すると、メモリリークが発生します。この関数は配列をリセットしないんですね。
今考えると当然のように思えますが、知らないとやってしまいそうなミスです。

そんなメモリリークのバグを簡単に見つけられるソフトを紹介します。
MemProofってソフトなんですが、英語やけど結構便利。
開放忘れが発生している、メモリ割り当ての処理のソースコードの位置まで示してくれます。

詳しい使い方はこちらを参照。

しかしやっぱり厳密にどこが悪いのかはコツを掴むまでなかなか大変。
日ごろから気をつけているつもりでも、やっぱり忘れてしまうことはあるから、こまめにチェックしておくと安定したソフトを作るのに役立ちそうです。

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>