【发布时间】:2013-10-07 03:17:01
【问题描述】:
在编程时,我多次遇到以下设计选择:用户创建一个对象并将其传递给其他对象,该对象在第二阶段以某种方式进行处理。
例如,您可以想象一个光线追踪器。用户创建具有某些属性的球体并调用raytracer.addTraceable(sphere)。现在,我可以想到三种方法。
- 光线追踪器负责解除分配给球体对象的内存
- 用户需要释放分配给球体对象的内存。
- 光线追踪器只复制球体对象,用户和光线追踪器都会释放它们的本地副本。
在这种情况下,一般来说最好的设计选择是什么?除了我提到的那些(不包括智能指针)还有其他选择吗?
PS:在使用面向对象的方法时,我在纯 C 语言中遇到了同样的问题。
【问题讨论】:
-
为什么要排除智能指针?
-
你认为显式引用计数是“智能指针”的一部分吗?
标签: c++ c pointers memory-management