让我们说我在我的代码中使用std::auto_ptr
。*
返回std::auto_ptr
对象有危险吗?
即它是否会导致内存泄漏,未定义的行为等?或者是否std::auto_ptr
安全使用?
*我不询问是否有更好的替代品(如shared_ptr
);我特地询问了返回auto_ptr
本身的陷阱。
答案 0 :(得分:4)
一般情况下,它是安全的,可以带来更强大的代码。它不应该导致内存泄漏,因为指向的内存是自动删除的。
但在某些情况下你必须小心:
auto_ptr
的副本 不相等!
auto_ptr
将释放第一个指针指向的对象请看这里:
auto_ptr模板类旨在帮助以半自动方式管理内存,并在异常等意外事件导致跳过正常清理代码时防止内存泄漏。
(引自(2))