c++ - Reference of a pointer returning weird value -
can explain me why code works (why return value)?
int main() { int *ptr = new int(113); int &rptr = *ptr; delete ptr; cout << rptr << endl; return 0; }
basically, return value get:
-572662307
what doing results in undefined behavior, fact you're getting number reasonable behavior.
when perform sequence:
int *ptr = new int(113); int &rptr = *ptr;
the reference rptr
refers integer created line new int(113)
. on next line, execute
delete ptr;
this deletes int
, meaning object no longer exists. pointers or references reference deallocated object, causes undefined behavior. consequently, when print rptr
with
cout << rptr << endl;
anything can happen. here, you're getting garbage data, program have crashed or reported debug error message.
interestingly: value printed (-572662307), treated 32-bit unsigned value, 0xdddddddd. bet memory allocator putting value deallocated memory debug memory errors one.
hope helps!
Comments
Post a Comment