X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=swcsa%2Futils%2Fbasics.c;h=437355ef1c8e656c48d59bd0821c8feb91792cef;hb=898f6e5c6b7223f4753b7ccb7939809ee5f53aae;hp=c9cb275f729e7bf89f80adc6b14d373113c74d4d;hpb=6ba83dea468496a31eb57bdbac9b257a5a191a26;p=SXSI%2FTextCollection.git diff --git a/swcsa/utils/basics.c b/swcsa/utils/basics.c index c9cb275..437355e 100755 --- a/swcsa/utils/basics.c +++ b/swcsa/utils/basics.c @@ -8,37 +8,54 @@ extern "C" { #include #include #include +#define ALLOC_WARN_LIMIT (40*1024*1024) // Memory management -static void *Malloc (size_t n) +void *Malloc_ (size_t n, size_t l, char * file) { void *p; - if (n == 0) return NULL; + + if (n > ALLOC_WARN_LIMIT) + { + fprintf(stderr, "\nWarning: allocating %lu bytes, file:%s, line: %lu\n", + n, file, l); + }; + p = (void*) malloc (n); - if (p == NULL) - { fprintf (stderr,"Could not allocate %i bytes\n",n); - exit(1); + if (p == NULL && n > 0) + { + fprintf (stderr,"Could not allocate %lu bytes, file: %s, line: %lu\n",n,file,l); + exit(1); } return p; } -static void Free (void *p) +void Free_ (void *p, size_t l, char * file) { if (p) free (p); + else { + fprintf (stderr,"Double free, file: %s, line: %lu\n",file,l); + exit(1); + } } -static void *Realloc (void *p, size_t n) - - { if (p == NULL) return Malloc (n); - if (n == 0) { Free(p); return NULL; } - p = (void*) realloc (p,n); - if (p == NULL) - { fprintf (stderr,"Could not allocate %i bytes\n",n); - exit(1); - } - return p; - } +void *Realloc_ (void *p, size_t n, size_t l, char * file) +{ + if (n > ALLOC_WARN_LIMIT) + { + fprintf(stderr, "\nWarning: allocating %lu bytes, file:%s, line: %lu\n", + n, file, l); + }; + + p = (void*) realloc (p,n); + if (p == NULL) + { + fprintf (stderr,"Could not re-allocate %lu bytes, file: %s, line: %lu\n",n,file,l); + exit(1); + } + return p; +} #include "basics.h"