libsent/src/util/mymalloc.c

説明を見る。
00001 
00023 /*
00024  * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University
00025  * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
00026  * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology
00027  * All rights reserved
00028  */
00029 
00030 #include <sent/stddefs.h>
00031 
00032 
00040 void *
00041 mymalloc(size_t size)
00042 {
00043   void *p;
00044   if ( (p = malloc(size)) == NULL) {
00045     jlog("Error: mymalloc: failed to allocate %zu bytes\n", size);
00046     exit(1);
00047   }
00048   return p;
00049 }
00050 
00058 void *
00059 mymalloc_big(size_t elsize, size_t nelem)
00060 {
00061   void *p;
00062   double limit;
00063 
00064   if (sizeof(size_t) == 4) {    /* 32bit environment */
00065     limit = (double)4294967296.0 / elsize; /* 2^32 */
00066     if (nelem >= limit) {
00067       jlog("Error: mymalloc_big: %zu bytes x %zu unit exceeds 4GB limit\n", elsize, nelem);
00068       exit(1);
00069     }
00070   }
00071   if ( (p = malloc(nelem * elsize)) == NULL) {
00072     jlog("Error: mymalloc: failed to allocate %zu bytes\n", nelem * elsize);
00073     exit(1);
00074   }
00075   return p;
00076 }
00077 
00086 void *
00087 myrealloc(void *ptr, size_t size)
00088 {
00089   void *p;
00090   if ( (p = realloc(ptr,size)) == NULL) {
00091     jlog("Error: mymalloc: failed to reallocate %zu bytes\n", size);
00092     exit(1);
00093   }
00094   return p;
00095 }
00096 
00105 void *
00106 mycalloc(size_t nelem, size_t elsize)
00107 {
00108   void *p;
00109   if ( (p = calloc(nelem,elsize)) == NULL) {
00110     jlog("Error: mymalloc: failed to clear-allocate %zu bytes\n", nelem*elsize);
00111     exit(1);
00112   }
00113   return p;
00114 }
00115 

Juliusに対してThu Jul 23 12:16:23 2009に生成されました。  doxygen 1.5.1