c++ - 谁应该拥有指针

标签 c++ c pointers memory-management

<分区>

在编程时,我多次遇到以下设计选择:用户创建一个对象并将其传递给其他对象,该对象在第二阶段以某种方式进行处理。

例如,您可以想象一个光线追踪器。用户创建一个具有特定属性的球体并调用 raytracer.addTraceable(sphere)。现在,我可以想到三种方法。

  1. 光线追踪器负责释放分配给球体对象的内存
  2. 用户需要释放分配给球体对象的内存。
  3. 光线追踪器仅复制球体对象,用户和光线追踪器都释放其本地拷贝。

通常在这种情况下最好的设计选择是什么?除了我提到的那些(不包括智能指针),还有其他选择吗?

PS:在使用面向对象的方法时,我在纯 C 中遇到过同样的问题。

最佳答案

一致使用RAII使这成为一个有争议的问题。使用诸如 std::shared_ptr 之类的智能指针,该对象由所有 指针拥有,并在最后一个指针被销毁后删除。

C 并没有真正方便的方式来表达 RAII 习语。

关于c++ - 谁应该拥有指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216559/

相关文章:

c++ - 使用 gstreamer 重新采样和卸载音频 rtp

c++ - std::add_const 和类似的用例

c - 这段代码是什么意思?

C++ ostream 使用模板隐式删除

c++ - 如何从map<pair<string, int>,pair<string, Array>>中迭代查找?

c++ - 静态 char* 的数组

c - 在 C 中操作字符串时,仅在发布配置中出现段错误

c - C 中的计时函数

c++ - 函数调用中的一元指针增量与函数调用之前/之后的增量

c# - C 指针结构 - buffer 指向另一个结构。如何在 C# 中?