This question already has answers here:
Can a local variable's memory be accessed outside its scope?
(20个答案)
6年前关闭。
使用/访问
我测试了与上述示例相似的情况,并且一切似乎都可以正常工作,好像嵌套块中的变量的生存期由于指针而得以延长。
我知道
该对象已被释放,并且
因此,否,
(20个答案)
6年前关闭。
int main()
{
float* ptr;
{
float f{10.f};
ptr = &f;
}
*ptr = 13.f;
// Do more stuff with `*ptr`...
}
使用/访问
*ptr
是有效还是未定义的行为? 我测试了与上述示例相似的情况,并且一切似乎都可以正常工作,好像嵌套块中的变量的生存期由于指针而得以延长。
我知道
const&
(常量引用)将延长临时文件的寿命。指针也一样吗? 最佳答案
这是未定义的行为,因为您正在访问已释放的对象。
在该特定范围内声明了f
变量。执行流到达时:
*ptr = 13.f;
该对象已被释放,并且
ptr
指向f
的旧地址。因此,否,
f
的生存期尚未延长。关于c++ - 指针会延长自动存储变量的生命周期吗? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20595222/
10-11 07:04