【发布时间】:2020-03-19 09:24:45
【问题描述】:
我在网上看到了悬空指针主题下的这段c++代码,并尝试执行它。 这可能看起来不愉快,但这里......
int *x, *y, *z;
x = new int;
*x = 3;
y = x;
delete x;
x = NULL;
z = new int;
*z = 5;
*y = 2;
当我打印 *z 时,它总是等于 *y 的值(在最后一行代码中指定),在这种情况下为 2 但如果我专门在倒数第二行本身做了 *z = 5。
【问题讨论】:
-
可能是因为
y恰好指向同一个内存位置。但是,这是 UB,因此不能保证y指向与z相同的内存位置。
标签: c++ pointers memory-management stack dangling-pointer