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

Mark K. Kim vox-tech@lists.lugod.org
Wed, 8 May 2002 11:34:00 -0700 (PDT)


It's not a Linux specific question, for it matters not the answer under
Linux for Linux frees regardless of one's intervention, but 'tis a valid
question so I believe...

Let's say you got a code like this (in C):

   tmp1 = (int*)malloc(5);
   tmp2 = (int*)malloc(6);
   if(!tmp1 || !tmp2)
   {
      fprintf(stderr, "Out of memory!\n");
      exit(1);
   }

If tmp1 is allocated (but not tmp2) at the time of exit(1), is it
guaranteed to be freed by the exiting process?  Or does one must free tmp1
before exitting?  The answer doesn't really matter on Linux (or most
modern systems, I suppose)  since it frees memory nonetheless, but is that
the standard?  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!

Thanks in adv!

-Mark

--
Mark K. Kim
http://www.cbreak.org/
PGP key available upon request.