Previous Section  < Free Open Study >  Next Section

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;


 Point(int=0, int=0, char*=''Red'');




 x = new_x;

 y = new_y;

 color = new char[strlen(col)+1];

 strcpy(color, col);




 delete color;

 cout << ''In the destructor\n'';


Point::Point(int new_x, int new_y, char* col)



 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;


    Previous Section  < Free Open Study >  Next Section