[vox-tech] Must one free() in C?

Jeff Newmiller vox-tech@lists.lugod.org
Wed, 8 May 2002 13:02:35 -0700 (PDT)


On Wed, 8 May 2002, Mark K. Kim wrote:

[...]

> The impliciation of requiring calls to free() before
> exitting is enormous -- one would have to keep track of all the allocated
> memory before exitting from any error condition!

Are you complaining? :)

Effects of a program's operation on memory after it has terminated, other
than the two defined return values, are not specified by Standard C.

If your program were to run indefinitely (as an embedded program or server
process would) then you would definitely not want to lose track of any
allocated memory under any circumstances or you would eventually exhaust
your resources.

This is the "resource management" problem that drives the desire for
exception handling in languages like Ada, C++, and Eiffel.  Even with
exception handling it can be non-trivial to handle correctly. If you don't
want the overhead of that solution (which IMHO is not usually
prohibitive), you are free to use C or assembly language and do the job
like a Real Programmer the first time. Or, assume your program will always
operate for short durations in a controlled OS like Linux.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...2k
---------------------------------------------------------------------------