这是如何运作的?指向指针赋值的指针

#include <iostream>
using namespace std;
int main() {
    int *p1;
    p1 = new int;
    int *p2;
    p2 = new int;
    p2 = p1;    // what happens here?
    *p1=5;
    cout << "pointer 2 is " << *p2 << endl << *p1 << endl;  // both give out 5
    delete p1;  // what happens to p2 ?
    cout << "pointer 2 is " << *p2 << endl;
    delete p2;
    return 0;
}

当我删除指针对象 p1 时会发生什么?什么是指针 p2 现在引用?有人能解释一下吗?谢谢您的帮助

回答

什么是指针 p2 现在引用?

没有。悬空了 它指向同一件事p1指着,但你已经删除了。

因此,你*p2的坏了,你的delete p2; 这些都有未定义的行为。

您还泄露了 second new int,因为p2曾经指向它但在您编写时停止这样做p2 = p1(您将其更改为指向第一个 new int,就像p1那样),并且没有其他方法可以引用它。


以上是这是如何运作的?指向指针赋值的指针的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>