#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;
}