在编程中,我经常遇到以下设计选择:用户创建一个对象,并将其传递给某个在第二阶段进行处理的其他对象。
例如,你可以想象一个光线追踪器。用户创建具有特定属性的球体并调用
1. 光线追踪器负责释放为球体对象分配的内存。 2. 用户需要释放为球体对象分配的内存。 3. 光线追踪器仅复制球体对象,用户和光线追踪器都释放其本地副本。
通常在这种情况下,哪种是最好的设计选择?除了我提到的选项(不包括智能指针)之外,还有其他选项吗?
PS:我在使用面向对象的方法时,在纯C中遇到了同样的问题。
例如,你可以想象一个光线追踪器。用户创建具有特定属性的球体并调用
raytracer.addTraceable(sphere)
。现在,我能想到以下三种方法来做这件事:1. 光线追踪器负责释放为球体对象分配的内存。 2. 用户需要释放为球体对象分配的内存。 3. 光线追踪器仅复制球体对象,用户和光线追踪器都释放其本地副本。
通常在这种情况下,哪种是最好的设计选择?除了我提到的选项(不包括智能指针)之外,还有其他选项吗?
PS:我在使用面向对象的方法时,在纯C中遇到了同样的问题。