忍者ブログ

RAPTのブログ

自サイトに書ききれなくなってしまったので、こちらに退避します。
ま、自サイトと異なり、ここではもっとフランクに行こうかと。

[PR]

2024/11/21(Thu)15:41

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

No.|CommentTrackback

メモリリーク修正

2006/07/04(Tue)02:55

未だにすべてのソースを理解できていないまま開発をしている。
それだけに、ときどきソースをじっくりと眺めると、普段触らないソース、でも頻繁に使用している個所にメモリリークが残っている事に気付いたり。

メモリリークは、自前でメモリを用意した場合は大抵すぐに気付くが、システムが必要に応じて確保するタイプの場合、どのタイミングで必要になるのかが分かりにくかったりするので、結構面倒なところがある。

今回、σ(^^)が見つけた、戻る/進むでのメモリリークも数年来放置されていたシステム文字列のリークだった。


分かりやすいように、エラー処理等は省いて書くと、

CComPtr<ITravelLogEntry> spTLEntry;

LPOLESTR szTitle = NULL;

spTLEntry->GetTitle( &szTitle );


とすると戻る/進むの履歴からタイトルが取得できるが、このタイトルを含む文字列の領域は、システムが確保する。そして使い終わったらプログラマが開放しなければならない。

::CoTaskMemFree( szTitle );


ここの処理が漏れていたため、長時間使った場合に、リークしたメモリが蓄積されていた。

こういうのって、それが目的で調査しているときよりも、別件で調査中についでに直す確率の方が高い気がするのは気のせいだろうか。。。
PR

No.4|Donut 関連Comment(0)Trackback

Comment

Comment Write
Name
Title
Mail
URL

Pass Vodafone絵文字 i-mode絵文字 Ezweb絵文字