This question already has answers here:
Can a local variable's memory be accessed outside its scope?

(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