这个问题在这里已有答案:
int * foo()
{
int b=8;
int * temp=&b;
return temp;
}
我有几个问题,
真的不明白。任何人都可以详细解释我上面的所有查询。
内存布局的哪一部分* p存在。
你的程序中没有p
。
我正在将局部变量地址复制到临时指针而不分配内存。但即使这样它也存储了局部变量的地址,它是如何实现的?
局部变量有一个地址。你可以退回那个地址。
该程序对我来说很好,当我取消引用它(局部变量肯定不会在那里)为什么我仍然得到这个值。
带有错误的代码会做出你不期望的奇怪事情。修复错误,神秘感将会消失。
在函数外部访问返回的地址时,返回局部变量的地址会导致未定义的行为。
变量b
的生命周期就在函数foo()
中,它不能比该函数寿命更长,因此访问该函数内的位置很好,但是你不能返回它的地址并在函数外部访问它。