Используя приведенный ниже код, я пытаюсь написать оболочку для calloc()
, чтобы я мог отслеживать выделенную память кучи, сохраняя размер в 1-х 2/4 байтах выделенной памяти. Когда я тестировал только это, кажется, все в порядке. Но когда я заменяю это как свою систему calloc()
, то это создает проблемы.. иногда это означает, что она возвращает NULL
, даже если доступно много кучи.
Я запускаю это на плате ARM с помощью компилятора IAR:
void *MyCalloc(size_t size) {
size_t new_size = ((size + 3) & ~0x3);
size_t *result = calloc(1,new_size + sizeof(size_t));
if ( result ) {
printf("MyCalloc addr: %p\n", result);
*result = (new_size + sizeof(size_t));
result = result + sizeof(size_t);
}
return result;
}
Любая идея, почему это вызывает проблему?
calloc
? - person cnicutar   schedule 16.02.2013