c++delete对象指针的时候,指针的值会改变吗?指针指向的对象内容会改变吗?

class Node{
Node* next;
Node():Node(NULL){};
};

Node* p = new Node;
p->next = new Node;
Node* q = p->next'

①delete p; // p的值不变,但p指向的next值被修改成垃圾数据, p->next指向的对象没有修改
// p =NULL;
②delete p->next; // p->next的值不变

指针不变,堆中的数据被修改成垃圾数据。对否?
但我看stackoverflow上说堆中的对象数据也有可能不会被改变,这是操作系统的原因吗?
好像是编译器的原因
VC6 指针不会改变
VS2013 指针改变

delete一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变。你需要手工将其赋值为NULL。

另外delete NULL的话不会有任何事情发生。追问

所谓回收,其实只是告诉系统这块内存可以被重新分配。但里面的值不确定是否会修改。我在VS2013测试的时候是会被修改的

温馨提示:答案为网友推荐,仅供参考
相似回答