头大的智能指针
来源:互联网 发布:红警2 for mac 编辑:程序博客网 时间:2024/05/17 06:52
虽然学程序都3年了,可是本人的基本功有的时候自己都怀疑。以前只听说过智能指针但一直没有用过。该来的总该回来躲是躲不掉的。到底让我碰上了。
这两天一直在学读写xml。为了简单当然得站在巨人的肩膀上了,所以我用的是很普遍的MS XML读取。废一句话刚开始写了一点程序还没成型所以现在还不想写出来丢人。今天只写一下智能指针的问题。
MSXML2::IXMLDOMDocument docPtr;
就是这个家伙使用完了退出程序总是报错。所以按照以前的方法:
if (docPtr != NULL)
{
docPtr->Release();
docPtr = NULL;
}
居然不行!!着实郁闷!!老经验:“你遇到的问题别人都遇到过,上网搜!”。终于黄天不负我程序有心人啊,问题终于找到并解决了。所以赶紧在这里记下一笔。
智能指针不用我们Release(),在赋值时也不用我们先判断原指针是否有效,然后Release(),然后再AddRef()等等一连串麻烦的调用....局部智能指针在函数结束时,会自动调用虚构函数以调用Release()。
当在一个类中中把智能指针作为类的数据成员。然后在一个类成员函数中调用::CoInitialize()初始化COM库,并初始化作为类的数据成员的智能指针。这就涉及另一个函数:::CoUninitialize()了。这个函数在什么时机调用比较好?当然是所有智能指针都释放了后再调用。但作为一个类的数据成员,如果这个数据成员本身也是一个类时,比如智能指针,会在这个类的虚构函数调用结束后再调用数据成员的虚构函数。这个问题又回到了刚才在一个函数使用智能指针的问题,也即一个范围的问题。
{
docPtr->Release();
}
{
docPtr->Release();
docPtr = NULL;
}
{
docPtr = NULL;
}
- 头大的智能指针
- C++智能指针大总结
- Boost的智能指针
- 智能指针的释放
- 智能指针的释放
- Android的智能指针
- 智能指针的设计
- Android的智能指针
- android的智能指针
- 智能指针的用法
- 智能指针的理解
- 智能指针的初次见面
- Android的智能指针
- 简单的智能指针
- 智能指针的使用
- andoid的智能指针
- C++的智能指针
- 智能指针的理解
- IncludeTrailingPathDelimiter和ExcludeTrailingPathDelimiter
- CSDN重要产品"个人空间"新版预告 先睹为快!
- 吾几星落五丈原矣555。。。
- DNN4.5.5数据库结构
- 现状和设想——试论中文信息处理与现代汉语研究
- 头大的智能指针
- 间隔色的 JTable
- zip,jar,tar文件解压
- 一个JSP开发中有用又好用的类
- c++ 文件的输入和输出
- 动态创建矩形及拖拽
- 大道至简-Java之23种模式一点就通
- 有关日期计算的二个常用方法
- 淘宝搞笑对话