#include <iostream>
using namespace std;
struct Object {
int somedata;
};
Object** globalPtrToPtr; // This is into another area called "data segment", could be heap or stack
void function() {
Object* pointerOnTheStack = new Object;
globalPtrToPtr = &pointerOnTheStack;
cout << "*globalPtrToPtr = " << *globalPtrToPtr << endl;
}
int main() {
// This can give an access violation, a different value after the pointer destruction
// or even the same value as before, randomly - Undefined Behavior
cout << "*globalPtrToPtr = " << *globalPtrToPtr << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE9iamVjdCB7CglpbnQgc29tZWRhdGE7Cn07CgpPYmplY3QqKiBnbG9iYWxQdHJUb1B0cjsgLy8gVGhpcyBpcyBpbnRvIGFub3RoZXIgYXJlYSBjYWxsZWQgImRhdGEgc2VnbWVudCIsIGNvdWxkIGJlIGhlYXAgb3Igc3RhY2sKCnZvaWQgZnVuY3Rpb24oKSB7CglPYmplY3QqIHBvaW50ZXJPblRoZVN0YWNrID0gbmV3IE9iamVjdDsKCWdsb2JhbFB0clRvUHRyID0gJnBvaW50ZXJPblRoZVN0YWNrOwoJY291dCA8PCAiKmdsb2JhbFB0clRvUHRyID0gIiA8PCAqZ2xvYmFsUHRyVG9QdHIgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CgkgLy8gVGhpcyBjYW4gZ2l2ZSBhbiBhY2Nlc3MgdmlvbGF0aW9uLCBhIGRpZmZlcmVudCB2YWx1ZSBhZnRlciB0aGUgcG9pbnRlciBkZXN0cnVjdGlvbgoJIC8vIG9yIGV2ZW4gdGhlIHNhbWUgdmFsdWUgYXMgYmVmb3JlLCByYW5kb21seSAtIFVuZGVmaW5lZCBCZWhhdmlvcgoJY291dCA8PCAiKmdsb2JhbFB0clRvUHRyID0gIiA8PCAqZ2xvYmFsUHRyVG9QdHIgPDwgZW5kbDsKCXJldHVybiAwOwp9