boost::shared_ptr之前,从函数返回堆分配的指针是否被认为是不好的做法,因为将要求调用者记住对对象进行free()

还是被认为是“正常”的?

最佳答案

我认为这不是一个坏习惯,只要您的API还提供了等效的XXX_free(或XXX_closeXXX_clearup或其他任何函数),客户端代码在使用指针结束时便可以调用。

这样一来,您就拥有了一个一致,对称的API,从某种意义上说,将堆对象生命周期的责任保持在一个地方。

这种方法也适用于更复杂的资源释放。例如,如果返回的指针指向动态分配的结构,该结构又具有指向动态分配的内存的成员,则可以从客户端代码中隐藏/抽象整个清理过程。

10-08 18:11