Mail Archives: djgpp/1997/01/10/21:38:36
DJ Delorie (dj AT delorie DOT com) wrote:
> xmalloc() checks for null return from malloc, and dies if so.
> xrealloc() checks for you passing a null, and calls malloc() if so.
> xfree() checks for you passing a null, and ignores it if so.
I wrote my own xmalloc(), xrealloc() and xfree() since I used to do this when
I used TC++. They are something like this:
void *xmalloc(size_t x) {
void *tmp;
tmp=malloc(x);
if(tmp==NULL) err("malloc error()");
return(tmp);
}
void *xrealloc(void *x,size_t y) {
void *tmp;
tmp=realloc(x,y);
if(tmp==NULL) err("realloc error");
return(tmp);
}
My program often calls xrealloc() with a NULL pointer, for example when
creating an array of structs from scratch. Is it calling my xrealloc
or djgpp's xrealloc? (The declarations for xrealloc() etc are /**/'d out
in the .h file declaring them, which I *do* include, but my program gets
linked with the standard C library which I presume contains them as well
as the object file containig my xrealloc() etc.)
I'd be interested to know since I though that
ANSI says realloc(NULL,x)==malloc(x); if my xrealloc is called, and realloc
is called from within it, am I heading for a big crash at some point? I've
never had any problems myself, but I'd like to know while I still have the
inclination to change it.
--Tom
PS I may have the pointer and the new size argument the wrong way round above.
When writing my own code I can always look for the last point it was used to
remind me :-)
- Raw text -