关于C++ delete 与 delete[]的讨论

来源:互联网 发布:java 反射写法 编辑:程序博客网 时间:2024/05/10 12:08
这篇文章代码取自C++简单链表操作Person * d1, *d2;d1 = head->getNext();head->setNext(p2);while (d1 != NULL) {d2 = d1->getNext();delete d1;d1 = d2;}

d1,d2分别是类对象指针

class Person{public:Person();~Person();void setID(int id);void setName(const char * name);int getID();char * getName() const;void setNext(Person * a);Person * getNext() const;private:int ID;char * Name;Person * next;};

在使用delete循环释放指针的时候发生错误 ,引发一个断点,

之所以引发这个错误的原因是之前reserve 替代的链表是使用数组快捷操作  导致delete d1  出错 

而应该改成delete []

用delete [] 代替delete 的时候  ,d2被滞空 。

delete 对应 new

delete [] 对应 new []

不能交替  没有定义交替的方法

原创粉丝点击