// bad memory demo #include using namespace std; class Foo{ public: Foo(){data = 77;} int getData() const {return data;} void setData(int n){ data = n;} private: int data; }; // ERROR: pointer to local variable Foo *someFN(){ Foo temp; return &temp; } main(){ // memory leak Foo *fp= new Foo; fp = new Foo; // no memory leak Foo *fp2= new Foo; delete fp2; fp2=0; fp2 = new Foo; // dangling pointer Foo *fp3 = new Foo; delete fp3; // dangling pointer Foo *fp4 = someFN(); Foo *f_ptr = 0; f_ptr = new Foo(); // Good: Always test pointer before accessing "something" // via the pointer. // Issue: the test won't help if your pointers are not // always pointing at 0 or the correct "object" if (f_ptr){ f_ptr -> setData(12); //(*f_ptr).setData(12); // equivalent, less common syntax cout << f_ptr -> getData(); } int x = 100; int *a=0; a = new int[x]; // c++ to make a runtime sized-array int b[x]; // error until just recently (?) a[5] = 7; Foo *foos=0; foos = new Foo[15]; }