hello there,
take a look carefully on this code for example :
Output:Code:#include <iostream>using namespace std; typedef unsigned short USHORT; int main() { USHORT * pInt = new USHORT; *pInt = 20; cout << "*pInt = " << *pInt << "\t&pInt = " << &pInt << endl; delete pInt; //pInt = 0; long * pLong = new long; *pLong = 90000; cout << "*pLong = " << *pLong << "\t&pLong = " << &pLong << endl; cout << "now assigning new value to *pInt\n"; *pInt = 10 ; cout << "dont assigning value to *pInt\n"; cout << "*pLong = " << *pLong << "\t&pLong = " << &pLong << endl; cout << "*pInt = " << *pInt << "\t&pInt = " << &pInt << endl; return 0; }
Code:*pInt = 20 &pInt = 0x28ff1c *pLong = 90000 &pLong = 0x28ff18 now assigning new value to *pInt dont assigning value to *pInt *pLong = 65546 &pLong = 0x28ff18 *pInt = 10 &pInt = 0x28ff1c
1. how come the *pLong value has been overwritten? it is not the same memory slot ?? (!!)
and if I compile and run the same code including line 11
Code:pInt = 0;
The program crashes on line 16 when i reassign the value 10 to *pInt.
2. can someone help me understand why the program crashes after a assign NULL to that deleted pointer?



LinkBack URL
About LinkBacks



