在 boost::shared_ptr
之前,从函数返回堆分配指针是否被认为是一种不好的做法,因为调用者需要记住 free()
那个物体?
或者,它被认为是“正常”的吗?
最佳答案
我不认为这是不好的做法,只要您的 API 还提供等效的 XXX_free
(或 XXX_close
、XXX_clearup
,或whatever) 函数,客户端代码可以在完成指针后调用。
这样,您就有了一个一致的、对称的 API,在这个意义上,堆对象的生命周期责任在一个地方维护。
这种方法也适用于更复杂的资源释放。例如,如果返回的指针指向动态分配的结构,而该结构又具有指向动态分配的内存的成员,则可以从客户端代码中隐藏/抽象整个清理过程。
关于c++ - 从函数返回堆分配的指针是不礼貌的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6431698/