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

Popular posts from this blog

javascript - backbone.js Collection.add() doesn't `construct` (`initialize`) an object -

php - Get uncommon values from two or more arrays -

Adding duplicate array rows in Php -