![]()  |  
  ![]()  |  
  ![]()  |  
  ![]()  |  
  ![]()  |  
   
 | 
The following is an assignment statement in the current version of 
analyze_trades: 
trade_pointers[limit] = (struct trade*) malloc (sizeof (struct trade));
 
To prevent the memory leak, you use  
the free function before you 
reassign a pointer and lose your access to the memory you want to reclaim. 
You can, for example, deploy the  
 
free function just before  
the allocation of new objects: 
... free (trade_pointers[limit]); trade_pointers[limit] = (struct trade*) malloc (sizeof (struct trade)); ...
 
So situated, the free function reclaims memory previously allocated 
by the corresponding malloc.  Once reclaimed, memory automatically 
becomes available for subsequent applications of malloc.
The first time that analyze_trades is called, the 
trade_pointers array contains pointers to 0, because the elements of 
global arrays are initialized to 0 by the C compiler.  Fortunately, 
free does nothing when its argument is 0.