C 按地址返回
我有几个问题C 按地址返回,c,C,我有几个问题 *p出现在内存布局的哪个部分 我将本地变量地址复制到临时指针,而不分配内存。但即使这样,它也存储了局部变量的地址,这是怎么可能的呢 这个程序对我来说运行得很好,当我去引用它时(局部变量肯定不存在),我怎么还能得到这个值呢 真的什么都不懂。任何人都可以详细解释我上面的所有查询。当在函数外部访问返回的地址时,返回局部变量的地址会导致未定义的行为 变量b的生存期就在函数foo()中,它不能超过该函数的生存期,因此访问该函数中的位置是可以的,但不能返回它的地址并在函数外部访问它 *p出现在
真的什么都不懂。任何人都可以详细解释我上面的所有查询。当在函数外部访问返回的地址时,返回局部变量的地址会导致未定义的行为 变量
b
的生存期就在函数foo()
中,它不能超过该函数的生存期,因此访问该函数中的位置是可以的,但不能返回它的地址并在函数外部访问它
*p出现在内存布局的哪个部分
您的程序中没有p
我将本地变量地址复制到临时指针,而不分配内存。但即使这样,它也存储了局部变量的地址,这是怎么可能的呢
局部变量有一个地址。你可以回那个地址
这个程序对我来说运行得很好,当我去引用它时(局部变量肯定不存在),我怎么还能得到这个值呢
带有bug的代码会做一些你意想不到的奇怪事情。修复错误,谜团就会消失。您仍然返回指向局部变量
b
的指针,这会导致错误指针和可能的未定义行为。什么是*p?你能把你所有的代码都贴在这里吗?看起来有人同意了,并对两个答案都投了反对票。@ParamagneticCroissant是的,有点奇怪,“返回局部变量的地址会导致未定义的行为。”--这不应该是这样的吗“返回局部变量的地址并在其他函数中使用它会导致未定义的行为。”?
int * foo()
{
int b=8;
int * temp=&b;
return temp;
}