从函数返回auto_ptr错误/容易出错?

时间:2013-07-01 08:21:59

标签: c++ auto-ptr

让我们说我在我的代码中使用std::auto_ptr。*

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

*我询问是否有更好的替代品(如shared_ptr);我特地询问了返回auto_ptr本身的陷阱。

1 个答案:

答案 0 :(得分:4)

一般情况下,它是安全的,可以带来更强大的代码。它不应该导致内存泄漏,因为指向的内存是自动删除的。

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

    {li> auto_ptr的副本 不相等
  • 从另一个构建一个auto_ptr释放第一个指针指向的对象

请看这里:

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

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

    (引自(2))