int main()
{
float* ptr;
{
float f{10.f};
ptr = &f;
}
*ptr = 13.f;
// Do more stuff with `*ptr`...
}
It it valid or undefined behavior to use/access *ptr?
I tested situations similar to the above example and everything seems to work as if the lifetime of the variable in the nested block was extended thanks to the pointer.
I know that const& (const references) will extend the lifetime of a temporary. Is this the same for pointers?
It's undefined behavior because you are accessing an object that has been deallocated.
The variable
fis declared within that specific block of scope. When the execution flow reaches:the object has been deallocated and
ptrpoints to the old address off.Therefore no, the lifetime of
fhas not been extended.