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
|
#include <stdio.h>
static char buf[10000];
static int bufi = 0;
void *realloc(void *ptr, size_t size) {
if (!ptr) {
bufi += size;
return buf + bufi - size;
} else {
return NULL;
}
}
void *calloc(size_t number, size_t size) {
bufi += number*size;
return buf + bufi - (number*size);
}
void free(void*ptr) {
}
void *reallocf(void *ptr, size_t size) {
return ptr;
}
volatile char* nullptr = NULL;
int main (void)
{
char *p;
p = realloc((void*)nullptr, 10);
p = calloc(10, 16);
(void)reallocf(p, 0);
return 0;
}
|