1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <malloc.h>
#include <string.h>
#include "cdo-alloc.h"
void * myalloc(size_t len) {
void * p = malloc(len);
if (p == NULL) {
fprintf(stderr, "end of memory\n");
exit(1);
}
return p;
}
void * myalloc_zero(size_t len) {
void * p = myalloc(len);
memset(p, 0, len);
return p;
}
void * myrealloc(void * p, size_t len) {
p = realloc(p, len);
if (p == NULL) {
fprintf(stderr, "end of memory\n");
exit(1);
}
return p;
}
char* my_strdup(const char* src) {
if (src == NULL) return NULL;
size_t len = strlen(src) + 1;
size_t padded_length = (len + 3) & ~3;
char* dup = (char*)myalloc_zero(padded_length);
if (dup == NULL) return NULL;
strcpy(dup, src);
return dup;
}
void myfree(void * p) {
free(p);
}
|