Prev Next TrackNewDel.cpp Headings

Tracking Use of New and Delete: Example and Test


# include <cppad/track_new_del.hpp>

bool TrackNewDel(void)
{    bool ok = true;

     // initial count
     size_t count = CPPAD_TRACK_COUNT();

     // allocate an array of lenght 5
     double *ptr = 0;
     size_t  newlen = 5;
     ptr = CPPAD_TRACK_NEW_VEC(newlen, ptr);

     // copy data into the array
     size_t ncopy = newlen;
     size_t i;
     for(i = 0; i < ncopy; i++)
          ptr[i] = double(i);

     // extend the buffer to be lenght 10
     newlen = 10;
     ptr    = CPPAD_TRACK_EXTEND(newlen, ncopy, ptr);
          
     // copy data into the new part of the array
     for(i = ncopy; i < newlen; i++)
          ptr[i] = double(i);

     // check the values in the array
     for(i = 0; i < newlen; i++)
          ok &= (ptr[i] == double(i));

     // free the memory allocated since previous call to TrackCount
     CPPAD_TRACK_DEL_VEC(ptr);

     // check for memory leak
     ok &= (count == CPPAD_TRACK_COUNT());

     return ok;
}


Input File: example/track_new_del.cpp