有意识控制智能指针的生命周期

代码:

 1 int main()
2 {
3 hrRetCode = CoInitialize(NULL);
4 KG_COM_ASSERT_EXIT(hrRetCode);
5 CComPtr<IHello> spHello = NULL;
6 spHello.CoCreateInstance( CLSID_HELLO );
7 KG_ASSERT_EXIT(spHello);
8 ...
9 Exit0:
10 CoUninitialize();
11 return 0;
12 }//运行结束后会崩溃

原因:智能指针通过栈上对象管理堆上对象,CoUniitialize()在智能指针销毁之前被调用,此时COM资源已被回收。

整理自:http://biancheng.dnbcw.info/1000wen/352982.html

posted on 2012-04-06 16:49  Joshua Leung  阅读(294)  评论(0编辑  收藏  举报

导航