いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

メモリリーク

相変わらず、かたかたコーディングしてデバッグしての毎日をおくっていますが、今日になって突然(?)メモリリークが発生!
「な、なんでやねん!」と思い、詳細なデータが出ている出力ウィンドウを見てみると…
Detected memory leaks!
Dumping objects ->
crtdbg.h(689) : {1763} normal block at 0x00E306B8, 4 bytes long.
 Data: <PU  > 50 55 E2 00
Object dump complete.
たったの4バイトかよ!
リークするなら、1MBぐらいどーんとリークしろよ!(意味不明

4バイトという量とはいえ、リークはリーク。問題を解決しなくてはなりません。_CrtSetBreakAlloc を使ってブレークをかけてみたら、あらまぁ std::vector の中でリークしているではありませんか。 orz
な、なんでやねん…

で、30分ぐらいして原因判明。問題のコードのイメージコードはこんな感じ↓

std::vector<A*> m_stlObjectList[16];

int n = 何か;
if(0 <= n && n <= 16)
  m_stlObjectList[n].push_back(&cObjectA);

もー。 orz