![]() |
Prev | Next |
# include <cppad/track_new_del.hpp>
newptr = TrackNewVec(
file,
line,
newlen,
oldptr)
TrackDelVec(
file,
line,
oldptr)
newptr = TrackExtend(
file,
line,
newlen,
ncopy,
oldptr)
count = TrackCount(
file,
line)
new[]
and delete[]
during the execution of a C++ program.
cppad/track_new_del.hpp
is included by
cppad/cppad.hpp
but it can also be included separately with out the rest of the
CppAD include files.
const char *
file
It should be the source code file name
where the call to TrackNew
is located.
The best way to accomplish this is the use the preprocessor symbol
__FILE__
for this argument.
int
line
It should be the source code file line number
where the call to TrackNew
is located.
The best way to accomplish this is the use the preprocessor symbol
__LINE__
for this argument.
Type *
oldptr
This argument is used to identify the type Type.
TrackNewVec
where the value of oldptr
does not matter).
size_t
newlen
Type *
newptr
It points to the newly allocated vector of objects
that were allocated using
new Type[
newlen]
size_t
ncopy
This specifies the number of elements that are copied from
the old array to the new array.
The value of ncopy
must be less than or equal newlen.
NDEBUG
is defined, this routine only sets
newptr =
Type new[
newlen]
The value of oldptr does not matter
(except that it is used to identify Type).
If NDEBUG
is not defined, TrackNewVec
also
tracks the this memory allocation.
In this case, if memory cannot be allocated
ErrorHandler
is used to generate a message
stating that there was not sufficient memory.
CPPAD_TRACK_NEW_VEC(
newlen,
oldptr)
expands to
CppAD::TrackNewVec(__FILE__, __LINE__,
newlen,
oldptr)
CppADTrackNewVec
is the
same as CPPAD_TRACK_NEW_VEC
.
It has been deprecated; i.e.,
it is still defined in the CppAD distribution, but it should
not be used.
TrackNew
or TrackExtend
.
If NDEBUG
is defined, this routine only frees memory with
delete []
oldptr
If NDEBUG
is not defined, TrackDelete
also checks that
oldptr was allocated by TrackNew
or TrackExtend
and has not yet been freed.
If this is not the case,
ErrorHandler
is used to generate an error message.
CPPAD_TRACK_DEL_VEC(
oldptr)
expands to
CppAD::TrackDelVec(__FILE__, __LINE__,
oldptr)
CppADTrackDelVec
is the
same as CPPAD_TRACK_DEL_VEC
.
It has been deprecated; i.e.,
it is still defined in the CppAD distribution, but it should
not be used.
TrackNewVec
),
copy ncopy elements from the old vector to the new vector.
If ncopy is greater than zero, oldptr
must have been allocated using TrackNewVec
or TrackExtend
.
In this case, the vector pointed to by oldptr
must be have at least ncopy elements
and it will be deleted (using TrackDelVec
).
Note that the dependence of TrackExtend
on NDEBUG
is indirectly through the routines TrackNewVec
and
TrackDelVec
.
CPPAD_TRACK_EXTEND(
newlen,
ncopy,
oldptr)
expands to
CppAD::TrackExtend(__FILE__, __LINE__,
newlen,
ncopy,
oldptr)
CppADTrackExtend
is the
same as CPPAD_TRACK_EXTEND
.
It has been deprecated; i.e.,
it is still defined in the CppAD distribution, but it should
not be used.
size_t
count
If NDEBUG
is defined, count will be zero.
Otherwise, it will be
the number of vectors that
have been allocated
(by TrackNewVec
or TrackExtend
)
and not yet freed
(by TrackDelete
).
CPPAD_TRACK_COUNT()
expands to
CppAD::TrackCount(__FILE__, __LINE__)
CppADTrackCount
is the
same as CPPAD_TRACK_COUNT
.
It has been deprecated; i.e.,
it is still defined in the CppAD distribution, but it should
not be used.