Example Code for Leak 3

 <  Free Open Study  >  

Example Code for Leak #3

 // The following code demonstrates the  // memory leakage problems associated // with deleting a dynamically allocated // array of Point objects. #include <iostream.h> class Point {  int x, y;  char* color; public:  Point(int=0, int=0, char*=''Red'');  ~Point(); }; {  x = new_x;  y = new_y;  color = new char[strlen(col)+1];  strcpy(color, col); } Point::~Point() {  delete color;  cout << ''In the destructor\n''; } Point::Point(int new_x, int new_y, char* col) main() {  Point *p = new Point[5];  // Note the missing square brackets. This  // statement is identical to ''delete[1] p;''.  // It will call the destructor once with  // the address of &p[0] as an argument. The  // color string of the first Point object is  // put back on the heap followed by the  // memory occupied by the five Point objects.  // The memory leaked is the color strings for  // Points two through five (indices 1 to 4).  delete p;  // The correct statement is :  // delete[] p; or delete[5] p; } 
 <  Free Open Study  >  


Object-Oriented Design Heuristics
Object-Oriented Design Heuristics (paperback)
ISBN: 0321774965
EAN: 2147483647
Year: 1996
Pages: 180

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net