请问C++中使用智能指针有什么意义?

如果我定义了一个类有一个指针成员,类的对象的复制和赋值操作符的使用,将使类的不同对象的指针成员指向同一个地址。如果我不使用智能指针的话,利用合成的或者说默认的析构函数,释放其中一个对象时,并不会释放对象中的内置类型包括指针成员,就应该不会出现书上说的“当类的不同对象的指针成员指向同一个地址时,若其中一个对象被删除,其他对象就会出现悬垂指针的情况”。这样的话,智能指针的这个用法还有什么意义呢?

你的这个题目真拗口。理解起来真困难。感觉像是N个地方同时指向同一个区域。智能指针具体是啥我不清楚,我也没用过,但是 基本应该和 引用计数器 是同一个东西。就是说 你想删它实体对象 是删不掉的,只有 把所有指向它的指针都清除了 它才真正消失。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-31
所谓“内存泄漏”就是说用指针动态开辟的内存没有释放(使用delete或者free函数(free只能针对malloc函数开辟的内存))。结果这块区域一直被标记“已使用”,但是实际上指针永远不使用它。(因为A a,b开辟了两个不同的内存单元,内部指针p不断创建新空间,就无法释放了)。C或者C++又不会自动释放,造成内存泄漏。解决方法:使用析构函数(参考代码)~A(){ delete p;}
相似回答