智能指针(~auto_ptr()和release()之间的区别)

时间:2011-05-15 15:24:32

标签: c++

我想知道~auto_ptr()release()函数之间的差异。

它们是相同的方法,还是内存的破坏和释放之间存在差异?

2 个答案:

答案 0 :(得分:8)

<强>的auto_ptr ::释放()

将auto_ptr内部指针设置为空指针(表示它指向无对象),而不破坏auto_ptr当前指向的对象。它在将内部指针设置为null之前返回该值。 调用release()后,auto_ptr仍然可以指向另一个对象。

<强>的auto_ptr ::〜auto_ptr的()

使用delete释放对象“指向”的内存块并销毁对象。\调用~auto_ptr()后,auto_ptr被销毁,不应再使用。

答案 1 :(得分:3)

嗯......只有当你用一个新的位置分配了对象所在的空间时,才自己调用析构函数。
也就是说,区别在于release有效并使对象处于有效状态,可以接受另一个指针。
~auto_ptr将破坏对象并使其处于无效状态,在调用析构函数后使用它是未定义的行为。