您的位置:首页 > 编程语言 > C语言/C++

对指针调用delete之后要记得把指针赋值为nullptr

2017-06-15 09:55 260 查看
对指针调用delete之后要记得把指针赋值为nullptr
否则,如果这个指针被重复delete,会死机。
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;

class Tree {
int height;
public:
Tree(int treeHeight) : height(treeHeight) {
cout << __func__ << "(), this = " << this << endl;
}
~Tree() { cout << "~Tree()\n"; }
#if 0
friend ostream&
operator<<(ostream& os, const Tree* t) {
return os << "Tree height is: "
<< t->height << endl;
}
#else
friend ostream&
operator<<(ostream& os, const Tree& t) {
return os << "Tree height is: "
<< t.height << endl;
}
#endif
};

int main() {
Tree* t = new Tree(40);
delete t;
//t = nullptr;
delete t;
}
运行结果:
frank@userver:~/project/test/cpp/new_del$ ./a.out
Tree(), this = 0x13b2010
~Tree()
~Tree()
*** Error in `./a.out': double free or corruption (fasttop): 0x00000000013b2010 ***
Aborted (core dumped)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++