我想知道如果我有 2 个指针指向同一个对象,然后我使用指针 1 删除它,它是否仍在内存中并且指针 2 将指向 null,或者对象将保留在内存中并且我需要使用 delete指针 2 来释放它?
我的意思是:
int *p1, *p2;
p1=new int;
p2=p1;
*p1=5;
p2=p1;
delete p1;
int x=*p2;
//Error or x=5?
最佳答案
- 对象将消失。
- 指针 2 将不是空指针,而是一个悬垂指针,其先前的值现在无效;用它做任何事情都会出错。1
- 指针 1 也是如此。两者之间不会有区别。
1 - 好吧,UB,这本身并不是“错误”。但不要这样做。
关于c++ 2指向同一对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181289/