Squelching SMARTALLOC
Usually, when you first install SMARTALLOC in an existing program you’ll find it nattering about lots of orphaned buffers. Some of these turn out to be legitimate errors, but some are storage allocated during program initialisation that, while dynamically allocated, is logically static storage not intended to be released. Of course, you can get rid of the complaints about these buffers by adding code to release them, but by doing so you’re adding unnecessary complexity and code size to your program just to silence the nattering of a SMARTALLOC, so an escape hatch is provided to eliminate the need to release these buffers.
Normally all storage allocated with the functions malloc()
,
calloc()
, and realloc()
is monitored by SMARTALLOC. If you make
the function call:
sm_static(1);
you declare that subsequent storage allocated by malloc()
,
calloc()
, and realloc()
should not be considered orphaned if
found to be allocated when sm_dump()
is called. I use a call on
“sm_static(1);
” before I allocate things like program configuration
tables so I don’t have to add code to release them at end of program
time. After allocating unmonitored data this way, be sure to add a call
to:
sm_static(0);
to resume normal monitoring of buffer allocations. Buffers allocated
while sm_static(1
) is in effect are not checked for having been
orphaned but all the other safeguards provided by SMARTALLOC remain in
effect. You may release such buffers, if you like; but you don’t have
to.
See also
Possible Next Steps
Go back to Smart Memory Allocation.
Go back to Developer Guide.