Обертывание malloc - C
Я новичок в C. Читая исходный код git, я нашел эту функцию-обертку вокругmalloc
.
void *xmalloc(size_t size)
{
void *ret = malloc(size);
if (!ret && !size)
ret = malloc(1);
if (!ret) {
release_pack_memory(size, -1);
ret = malloc(size);
if (!ret && !size)
ret = malloc(1);
if (!ret)
die("Out of memory, malloc failed");
}
#ifdef XMALLOC_POISON
memset(ret, 0xA5, size);
#endif
return ret;
}
Вопросы
Я не мог понять, почему они используютmalloc(1)
?Что значитrelease_pack_memory
делает, и я не могу найти реализацию этой функции во всем исходном коде.Что это#ifdef XMALLOC_POISON memset(ret, 0xA5, size);
делает?Я планирую повторно использовать эту функцию в моем проекте. Это хорошая обертка вокругmalloc
?
Любая помощь будет отличной.