是什么让smartpointers比普通指针更好?

Som*_*ser 2 c++ pointers

是什么让smartpointers比普通指针更好?

Dav*_*eas 11

它们简化了资源管理的问题.一旦您将资源保存在智能指针中,当他们超出应用RAII技术的范围时,他们将为您释放内存.

这有两个主要优点:代码更安全(更不容易出现资源泄漏),编程更容易,因为您不需要记住代码的每个部分是否必须手动释放您持有的资源.


Pau*_*nde 7

主要优点是当指针超出范围时,智能指针指向的内存将自动解除分配.使用常规指针,您必须自己管理内存.


jal*_*alf 7

原始指针不会获取它指向的资源的所有权.当指针超出范围时,它指向的对象不受影响.通常,您需要某种所有权语义,当指针超出范围时,它指向的对象应该被删除,或者至少被通知指向它的指针少一个.

这就是智能指针的作用.

一个shared_ptr工具引用计数,这样当所有指向对象的指针被破坏,该对象被删除.

其他的,像scoped_ptrunique_ptrauto_ptr实施各种形式的独家拥有.当a scoped_ptr被销毁时,它会删除它指向的对象.


duf*_*ymo 5

内存泄漏更少.也许Scott Meyers可以让你更清楚:

  1. 有效的C++
  2. 更有效的C++