Date: Thu, 22 Feb 2001 22:12:36 -0800 From: Farooq Mela <fmela0@sm.socccd.cc.ca.us> To: freebsd-hackers@FreeBSD.ORG Subject: Setting memory allocators for library functions. Message-ID: <3A95FF54.5D48E0A1@sm.socccd.cc.ca.us>
index | next in thread | raw e-mail
Hi,
Usually when I write programs, I have functions such as the following:
void *
xmalloc(size_t size)
{
void *p;
if ((p=malloc(size))==NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
return(p);
}
void *
xrealloc(void *ptr, size_t size)
{
void *p;
if ((p=realloc(ptr,size))==NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
return(p);
}
And then I use these instead of malloc and realloc throughout the
program, and never have to worry about return values. Sometimes these
functions also have additional cleanup they perform. Anyway, there are
certain libc functions which also use malloc, such as getaddrinfo,
vasprintf, etc. These may fail with errno = ENOMEM. In general, it is
annoying to have to check the return values for these functions too.
Would it not be convenient to set the memory allocator used by certain
functions inside libc? I.E, be able to write:
set_allocator(xmalloc);
set_reallocator(xrealloc);
From then on, one would never have to worry about the functions running
out of memory. I know that wrappers for functions which allocate memory
can also be written, but I feel that my proposal would is in general a
more convenient solution.
How do you guys feel about this?
-Farooq
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A95FF54.5D48E0A1>
