从错误/易出错的函数返回auto_ptr

Is returning auto_ptr from functions wrong/error-prone?

本文关键字:返回 auto ptr 函数 错误 易出错      更新时间:2023-10-16

假设我在代码中使用std::auto_ptr。*

返回std::auto_ptr对象是否有危险
即,它会导致内存泄漏、未定义的行为等吗。?还是std::auto_ptr的安全使用?

*我不是在问是否有更好的替代品(比如shared_ptr);我特别询问返回auto_ptr本身的陷阱

一般来说,它是安全的,可以产生更健壮的代码。它不应该导致内存泄漏,因为指向的内存是自动删除的。

但在某些情况下,你必须小心:

  • auto_ptr的副本不相等
  • 从另一个auto_ptr构造一个将释放第一个指针指向的对象

请看这里:

  1. http://www.gotw.ca/publications/using_auto_ptr_effectively.htm
  2. http://www.cprogramming.com/tutorial/auto_ptr.html

auto_ptr模板类旨在帮助以半自动的方式管理内存,并在异常等意外事件导致跳过正常清理代码时防止内存泄漏。

(引用自(2))