c ++指向同一对象的2个指针

noi*_*cat 1 c++ pointers

我想知道我是否有2个指针指向相同的对象,然后我使用指针1删除它,它仍然在内存中,指针2将指向null,或者对象将保留在内存中我需要使用删除指针2来免费吗?

我的意思是:

int *p1, *p2;
p1=new int;
p2=p1;
*p1=5;
p2=p1;
delete p1;

int x=*p2;
//Error or x=5?
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 8

  • 对象将消失.
  • 指针2不是空指针,而是悬空指针,具有先前但现在无效的值; 用它做任何事都将是一个错误.1
  • 指针1也是如此.两者之间没有区别.

1 - 嗯,UB,本身不是"错误".但是不要这样做.