我想知道~auto_ptr()
和release()
函数之间的差异。
它们是相同的方法,还是内存的破坏和释放之间存在差异?
答案 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
将破坏对象并使其处于无效状态,在调用析构函数后使用它是未定义的行为。