从错误/易出错的函数返回auto_ptr
Is returning auto_ptr from functions wrong/error-prone?
假设我在代码中使用std::auto_ptr
。*
返回std::auto_ptr
对象是否有危险
即,它会导致内存泄漏、未定义的行为等吗。?还是std::auto_ptr
的安全使用?
*我不是在问是否有更好的替代品(比如shared_ptr
);我特别询问返回auto_ptr
本身的陷阱
一般来说,它是安全的,可以产生更健壮的代码。它不应该导致内存泄漏,因为指向的内存是自动删除的。
但在某些情况下,你必须小心:
-
auto_ptr
的副本不相等 - 从另一个
auto_ptr
构造一个将释放第一个指针指向的对象
请看这里:
- http://www.gotw.ca/publications/using_auto_ptr_effectively.htm
- http://www.cprogramming.com/tutorial/auto_ptr.html
auto_ptr模板类旨在帮助以半自动的方式管理内存,并在异常等意外事件导致跳过正常清理代码时防止内存泄漏。
(引用自(2))
相关文章:
- 为什么结构化绑定不使用"auto&"返回对结构成员的引用,而是返回成员本身
- 为什么"weak.lock()"返回"nullptr" "auto weak=std::make_shared<int>(42);"的定义?
- 为什么 std::gcd/lcm 返回 std::common_type_t<M, N> 而不是 auto?
- 使用constexpr + auto作为返回和参数类型的奇怪类型推导
- 如果使用返回引用的函数初始化"auto"var,为什么它不声明引用类型?
- decltype(auto) 是否使尾随返回类型过时?
- 用 decltype 和 auto 推导出 const(返回)类型
- 返回"auto"的函数在定义之前不能使用
- 警告:函数使用不带尾随返回类型的'auto'类型说明符
- 提示编译器在使用 auto 时通过引用返回,而不使用 ->
- 使用auto&&完美转发返回值
- decltype(auto) 类型演绎:返回 x 与返回 (x)
- 如何验证返回的“auto”变量是否为引用
- C++:在原型中声明"auto"函数返回类型仍然会导致在扣除错误之前使用"auto&quo
- 从函数返回引用是否会导致在使用'auto'时创建新的临时对象?
- C++14 'auto'能够获取函数返回类型,我们还需要 std::result_of<> 吗?
- 如何在编译时决定'auto'返回类型?
- 使用auto参数munmap_chunk()返回auto的函数:无效指针
- 如何 SFINAE 启用返回“auto”的成员函数
- 使用静态constexpr成员函数在类内部返回auto