c++ - 智能指针 - 无法替代原始指针的情况

标签 c++ smart-pointers

你好,

我有关于智能指针的疑问。

我从我的一位 friend 那里听说,智能指针几乎总是可以替代原始指针。 但是当我问他还有哪些智能指针不能替代原始指针的情况时,我没有从他那里得到答案。

谁能告诉我他们何时何地不能替换原始指针?

最佳答案

  1. 将指针传递给遗留 API。
  2. 引用计数树结构中的反向引用(或任何循环情况)。这是有争议的,因为您可以使用弱引用。
  3. 遍历一个数组。

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

  1. 一些小程序旨在泄露所有内容,因为不值得自己弄清楚如何清理的复杂性。
  2. 诸如解析器之类的细粒度批处理算法可能会从预先分配的内存池中进行分配,然后在完成时直接清除整个池。将智能指针指向这样的池通常毫无意义。

关于c++ - 智能指针 - 无法替代原始指针的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593173/

相关文章:

c++ - WaitForMultipleObjects 是否会导致创建 STA COM 对象的线程出现问题?

c++ - CMake MacOS X bundle with BundleUtiliies for Qt application

c++ - 使用基对象和派生对象的虚函数

c++ - gtkmm 管理/添加 vs 智能指针 :

c++ - 使用工厂函数创建std::shared_ptr

c++ - 定义一个调用其他函数的内联函数是否有意义?

c++ - Qt 中不同线程上的信号/插槽 OpenCV Mat

c++ - 从内部函数中删除 smart_ptr

c++ - 智能指针构造函数错误

pointers - 将 unique_ptr/shared_ptr 与 API 函数结合使用,通过指针将资源作为输出参数返回