以下のシナリオで CComBSTR を使用しています。
void MyDlg::OnTimer()
{
......
CComBSTR statusString1 = ::SysAllocString(_T("Test"));
....
}
タイマーは 5 秒間隔ごとに実行されます。
上記の場合、メモリは 5 秒ごとに増加しています。私の理解によると、CComBSTR は範囲外になるとメモリをクリーンアップします。したがって、タイマーが終了するたびに、割り当てられたメモリを解放する必要があります。しかし、そうではありません。
CCOMBSTR の使用時にメモリが解放されるタイミングを理解する必要があります。