c++ - 从函数返回堆分配的指针是不礼貌的吗?

标签 c++ c pointers heap-memory

boost::shared_ptr 之前,从函数返回堆分配指针是否被认为是一种不好的做法,因为调用者需要记住 free() 那个物体?

或者,它被认为是“正常”的吗?

最佳答案

我不认为这是不好的做法,只要您的 API 还提供等效的 XXX_free(或 XXX_closeXXX_clearup,或whatever) 函数,客户端代码可以在完成指针后调用。

这样,您就有了一个一致的、对称的 API,在这个意义上,堆对象的生命周期责任在一个地方维护。

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

关于c++ - 从函数返回堆分配的指针是不礼貌的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6431698/

相关文章:

c++ - Valgrind 报告在一个系统上读取无效,但在另一个系统上没有

C - 初始化结构成员 - 指针数组。第二个元素的值不正确

C++ 内存泄漏

c++ - 如何在类外定义 lambda 函数并在 C++ 类内使用它?

c - 使用工作线程模式时如何正确处理信号?

c++ - 如何在 C++ 中使用数组?

c++ - 如何删除 vector 的指针

c++ - 在 Carbon 中创建 JPEG 时的 JPEG 质量

c++ - 适合按顺序插入的容器? C++

c - Newlib 的 Malloc 是 "ignoring"一大堆空闲内存