2

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

退货有什么危险std::auto_ptr吗?
即它会导致内存泄漏、未定义的行为等吗?还是可以安全使用std::auto_ptr

*我不是在问是否有更好的替代品(例如shared_ptr);我特意询问回归auto_ptr本身的陷阱。

4

1 回答 1

4

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

但是在某些情况下您必须小心:

  • 副本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))

于 2013-07-01T08:32:26.280 回答