指针是否延长了自动存储变量的生命周期?

Vit*_*meo 1 c++ variables storage pointers automatic-storage

int main() 
{
    float* ptr;

    {
        float f{10.f};
        ptr = &f;
    }

    *ptr = 13.f;
    // Do more stuff with `*ptr`...
}
Run Code Online (Sandbox Code Playgroud)

它使用/访问有效或未定义的行为*ptr

我测试了类似于上面示例的情况,并且所有内容似乎都起作用,好像嵌套块中变量的生命周期由于指针而被扩展.

我知道const&(const引用)将延长临时的生命周期.指针是否相同?

Sho*_*hoe 6

它是未定义的行为,因为您正在访问已解除分配的对象.

变量f在该特定的作用域内声明.当执行流程到达时:

*ptr = 13.f;
Run Code Online (Sandbox Code Playgroud)

该对象已被解除分配并ptr指向旧地址f.

因此没有,寿命f没有延长.


rem*_*s4e 5

浮点数将超出范围,您的指针将引用未分配的内存区域 - >使用它将导致UB.