Smart Memory Allocation
Introduction

Smart Memory Allocation with Orphaned Buffer Detection
Few things are as embarrassing as a program that leaks, yet few errors are so easy to commit or as difficult to track down in a large, complicated program as failure to release allocated memory. SMARTALLOC replaces the standard C library memory allocation functions with versions which keep track of buffer allocations and releases and report all orphaned buffers at the end of program execution. By including this package in your program during development and testing, you can identify code that loses buffers right when it’s added and most easily fixed, rather than as part of a crisis debugging push when the problem is identified much later in the testing cycle (or even worse, when the code is in the hands of a customer). When program testing is complete, simply recompiling with different flags removes SMARTALLOC from your program, permitting it to run without speed or storage penalties.
In addition to detecting orphaned buffers, SMARTALLOC also helps to find
other common problems in management of dynamic storage including storing
before the start or beyond the end of an allocated buffer, referencing
data through a pointer to a previously released buffer, attempting to
release a buffer twice or releasing storage not obtained from the
allocator, and assuming the initial contents of storage allocated by
functions that do not guarantee a known value. SMARTALLOC’s checking
does not usually add a large amount of overhead to a program (except for
programs which use realloc()
extensively; see below). SMARTALLOC
focuses on proper storage management rather than internal consistency of
the heap as checked by the malloc_debug facility available on some
systems. SMARTALLOC does not conflict with malloc_debug and both may be
used together, if you wish. SMARTALLOC makes no assumptions regarding
the internal structure of the heap and thus should be compatible with
any C language implementation of the standard memory allocation
functions.
Download smartall.zip (Zipped archive)
SMARTALLOC is provided as
smartall.zip, a
Zipped archive containing source code,
documentation, and a Makefile
to build the software under Unix.
Copying
SMARTALLOC is in the public domain. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, without any conditions or restrictions. This software is provided ”as is“ without express or implied warranty.
by John Walker October 30th, 1998
Possible Next Steps
Go back to Smart Memory Allocation.
Go back to Developer Guide.