CComPtr<IHTMLElement> pel是否都得用pel.Release();释放? 绝大多数例子代码都是不释放的,哪个正确 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不释放---正确pel.Release()---正确,但只有在pel有效时才能调用,通常是 if (pel) pel.Release();pel->Release()---错误,将造成引用计数混乱,组件可能被提前释放。 不用pel.Release();来释放。因为CComPtr本身就是要解决这个问题而产生的:) ATLBASE.H ~CComPtr() { if (p) p->Release(); } void Release() { IUnknown* pTemp = p; if (pTemp) { p = NULL; pTemp->Release(); } }若手动释放,必须使用 .Release() 蓝牙适配器编程? 为什么ATL要自己实现一个CWindow来包装HWND而不用直接用MFC的CWnd? CWnd类无标题窗口应该怎么弄? 线程中创建对话框的问题 怎样控制文本框输入长度? 关于对话框初始化与wm_size消息的问题 连接过多会断开连接 什么问题,请指教 如果利用vc把下位机的数据描在坐标系上 一个简单的问题?忘高手指点一下! 如何创建一个控件的子控件?能以button说明吗 怎么在CTime类型的时间上增加数月? 有没有办法可以获取调用这个函数的函数名称
pel.Release()---正确,但只有在pel有效时才能调用,通常是 if (pel) pel.Release();
pel->Release()---错误,将造成引用计数混乱,组件可能被提前释放。
{
if (p)
p->Release();
}
void Release()
{
IUnknown* pTemp = p;
if (pTemp)
{
p = NULL;
pTemp->Release();
}
}若手动释放,必须使用 .Release()