智能指针 - 无法替换原始指针的情况

Vij*_*jay 11 c++ smart-pointers

HI,

我有关于智能指针的查询.

我从一位朋友那里听说智能指针几乎总能取代原始指针.但当我问他智能指针无法取代原始指针的其他情况时,我没有得到他的答案.

任何人都可以告诉我他们何时何地无法取代原始指针?

Mar*_*tos 11

  1. 传递指向旧API的指针.
  2. 引用计数树结构中的反向引用(或任何循环情况,就此而言).这个是有争议的,因为你可以使用弱参考.
  3. 迭代数组.

在许多情况下,您可以使用智能指针,但可能不想,例如:

  1. 一些小程序旨在泄露一切,因为它不值得增加复杂性,找出如何清理自己.
  2. 细粒度批处理算法(如解析器)可能会从预先分配的内存池中分配,然后在完成时将整个池清除掉.拥有智能指针进入这样的池通常是没有意义的.

  • 2.需要一个弱指针,不一定是原始指针 (4认同)