Re: freeing memory

From: Mike Breuer (mbreuer@new.rr.com)
Date: 04/14/01


From: "Peter Ajamian" <peter@PAJAMIAN.DHS.ORG>
> > > if (obj->description &&
> > >     obj->description != obj_proto[GET_OBJ_RNUM(obj)].description)
> > >   free(obj->description);
> > > obj->description = str_dup("A dagger lies here.");
> >
> > That code should work fine, although the first condition of your if is
not
> > necessary.
>
> Not necessary, but it's a good safegaurd nonetheless.

Untrue.  Under ANSI C and every compiler I used it is perfectly valid to
call free(0).  It causes no error, no complaint, no action-- it does
nothing.  Incidentally, the same is true of "delete" in C++.  Basically, the
rule is you can pass to free any value that was returned by malloc.  Since
malloc can return 0, it is valid to pass 0 to free.

Mike

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/05/01 PST