Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
メモリ・リークの事例と、関連する基礎用語・知識
良くあるメモリ・リークの事例 †
メモリ・ヒープの断片化 †
仮想アドレス空間のブロックのサイズの大小が影響して、断片化が問題になる。
このため実際にコミットできるのは仮想アドレス空間の半分程度になることもある。
設計上の問題 †
- 大量データをキャッシュ
- 不要なデータ(列など)を取得
- 大量の結果セットを取得(SELECT文)
- 巨大なDLL、Assembly(本来分割すべきもの)
実装上の問題 †
- 不要なオブジェクトのコピー
- メモリ・オブジェクトの開放漏れ
- リソースリーク、ハンドルリーク
メモリ以外のリソースリーク。ハンドルのリークという形で確認できる。
スレッドのリークはスタック(メモリ)のリークにも繋がる。
- メモリリーク
- VC++
メモリ:malloc、free(など、詳しくは後述)
オブジェクト:new、delete
ハンドラ:open、close