00001
00023
00024
00025
00026
00027
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) {
00065 limit = (double)4294967296.0 / elsize;
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