bob*_*obo 1 c c++ pointers heap-memory
之前boost::shared_ptr
,从函数返回堆分配指针被认为是一种不好的做法,因为调用者需要记住free()
该对象吗?
或者,它被认为是"正常"?
Oli*_*rth 11
我不认为这是不好的做法,只要你的API还提供等效XXX_free
(或XXX_close
,XXX_clearup
或其他)功能,当使用指针完成的客户端代码可以调用.
这样,就可以在一个地方维护堆对象生命周期的责任,从而拥有一致的对称API.
这种方法也适用于更复杂的资源释放.例如,如果返回的指针是动态分配的结构,而该结构又具有指向动态分配的内存的成员,则可以从客户端代码隐藏/抽象整个清理过程.