【发布时间】:2012-08-12 12:49:04
【问题描述】:
我在以下场景中使用 CComBSTR,
void MyDlg::OnTimer()
{
......
CComBSTR statusString1 = ::SysAllocString(_T("Test"));
....
}
计时器将每隔 5 秒执行一次。
在上述情况下,内存每 5 秒增加一次。据我了解,CComBSTR 在超出范围时会清理内存。因此,每当计时器结束时,必须释放分配的内存。但事实并非如此。
我需要了解当使用 CCOMBSTR 时内存何时被释放。
【问题讨论】:
-
你如何衡量内存增加?
-
案例 1:我使用 Windows 任务管理器并在“已用内存”中获得了内存使用情况;在这种情况下,如果我创建动态内存并删除,它会增加和减少。但在 CCOMBSTR 的情况下,它不是。案例 2:我使用 GlowCode 并查看当前字节数。
-
任务管理器现在会向您显示可靠的指示。请改用性能监视器或进程资源管理器,有关详细信息,请参阅stackoverflow.com/questions/1984186/…。
标签: visual-c++ mfc atl bstr