Main Page | Modules | Data Structures | Directories | File List | Data Fields

memory.c

00001 /*
00002  * Copyright (c) 2005-2007 by KoanLogic s.r.l. - All rights reserved.
00003  */
00004 
00005 static const char rcsid[] =
00006     "$Id: memory.c,v 1.3 2007/02/12 08:32:27 tho Exp $";
00007 
00008 #include <stdlib.h>
00009 #include <toolbox/memory.h>
00010 
00011 typedef struct u_memory_funcs_s
00012 {
00013     void *(*f_malloc) (size_t);
00014     void *(*f_calloc) (size_t, size_t);
00015     void *(*f_realloc) (void *, size_t);
00016     void (*f_free) (void *);
00017 } u_memory_fns_t;
00018 
00019 /* defaults to LibC memory allocator */
00020 static u_memory_fns_t u_memory_fns = { malloc, calloc, realloc, free };
00021 
00028 void u_memory_set_malloc (void *(*f_malloc) (size_t))
00029 {
00030     u_memory_fns.f_malloc = f_malloc;
00031 }
00032 
00034 void u_memory_set_calloc (void *(*f_calloc) (size_t, size_t))
00035 {
00036     u_memory_fns.f_calloc = f_calloc;
00037 }
00038 
00040 void u_memory_set_realloc (void *(*f_realloc) (void *, size_t))
00041 {
00042     u_memory_fns.f_realloc = f_realloc;
00043 }
00044 
00046 void u_memory_set_free (void (*f_free) (void *))
00047 {
00048     u_memory_fns.f_free = f_free;
00049 }
00050 
00052 void *u_malloc (size_t sz)
00053 {
00054     return u_memory_fns.f_malloc(sz);
00055 }
00056 
00058 void *u_calloc (size_t cnt, size_t sz)
00059 {
00060     return u_memory_fns.f_calloc(cnt, sz);
00061 }
00062 
00064 void *u_zalloc (size_t sz)
00065 {
00066     return u_memory_fns.f_calloc(1, sz);
00067 }
00068 
00070 void *u_realloc (void *ptr, size_t sz)
00071 {
00072     return u_memory_fns.f_realloc(ptr, sz);
00073 }
00074 
00076 void u_free (void *ptr)
00077 {
00078     if (ptr)
00079         u_memory_fns.f_free(ptr);
00080 }
00081 

←Products
© 2005-2007 - KoanLogic S.r.l. - All rights reserved