++calls[idx_free];
atomic_increment (&calls[idx_free]);
free (void *ptr){  struct header *real;  /* Determine real implementation if not already happened.  */  if (__builtin_expect (initialized <= 0, 0))    {      if (initialized == -1)	return;      me ();    }  /* If this is not the correct program just use the normal function.  */  if (not_me)    {      (*freep) (ptr);      return;    }  /* `free (NULL)' has no effect.  */  if (ptr == NULL)    {      ++calls[idx_free];      return;    }  /* Determine the pointer to the header.  */  real = ((struct header *) ptr) - 1;  if (real->magic != MAGIC)    {      /* This block wasn't allocated here.  */      (*freep) (ptr);      return;    }  /* Keep track of number of calls.  */  ++calls[idx_free];  /* Keep track of total memory freed using `free'.  */  total[idx_free] += real->length;  /* Update the allocation data and write out the records if necessary.  */  update_data (NULL, 0, real->length);  /* Do the real work.  */  (*freep) (real);}