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

标签 c++ pointers

我想知道如果我有 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/

相关文章:

c++ - VS2010 调试级别不匹配

c++ - 访问冲突写入矩阵

c++ - 0xC0000005 : Access violation reading location of an Integer?

c - 将指针表示为字符串,反之亦然

c - 指向结构指针的指针

android - 确定套接字何时在 Android 上关闭

来自 C++ 客户端的 Java DataInputStream readInt() 获得了巨大的值(value)

c - Printf 无法正确打印字符串

c++ - 如何使用初始化列表构造 std::array 对象?

delphi - 使用 1 个数据副本同步多个 VirtualStringTree