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引用)将延长临时的生命周期.指针是否相同?
它是未定义的行为,因为您正在访问已解除分配的对象.
变量f在该特定的作用域内声明.当执行流程到达时:
*ptr = 13.f;
Run Code Online (Sandbox Code Playgroud)
该对象已被解除分配并ptr指向旧地址f.
因此没有,寿命f没有延长.