// comments #include int* myFunction(void) { using namespace std; int varOnStack = 1; int* varOnHeap = new int; *varOnHeap = -1; cout << "pointer on heap varOnHeap:" << endl; cout << " value = " << *varOnHeap << endl; cout << " address = " << varOnHeap << endl; return varOnHeap; } int main(int argc, char** argv) { using namespace std; int varOnStack = 0; cout << "var on stack varOnStack:" << endl; cout << " value = " << varOnStack << endl; cout << " address " << &varOnStack << endl; for(int i = 0; i < 4; i++) { int anotherVarOnStack = i; cout << "var on stack anotherVarOnStack:" << endl; cout << " value = " << anotherVarOnStack << endl; cout << " address " << &anotherVarOnStack << endl; } //cout << "anotherVarOnStack still on stack? " << anotherVarOnStack << endl; //cout << " what about its address? " << (void*) &anotherVarOnStack << endl; int* pointerToVarOnHeap = myFunction(); cout << "pointer on heap pointerToVarOnHeap:" << endl; cout << " value = " << *pointerToVarOnHeap << endl; cout << " address = " << pointerToVarOnHeap << endl; //delete &varOnStack; for(int i = 0; i < 5; i++) { cout << "pointerToVarOnHeap[" << i << "]: " << endl; cout << " value = " << pointerToVarOnHeap[i] << endl; cout << " address = " << &pointerToVarOnHeap[i] << endl; } delete pointerToVarOnHeap; return 0; }