Игнорирование проблем многопоточности, гарантированно сработает следующее:
int can_alloc(size_t i)
{
void *p = malloc(i);
if(p == NULL) return 0;
free(p);
return 1;
}
// later
if(can_alloc(10))
{
char *c = malloc(10); // no need to verify, we already did?
memcpy(c, "something", 10);
}
Это в основном из любопытства.У меня нет планов использовать это для чего-либо, но я считаю, что это должно быть гарантировано, и было бы полезно знать наверняка.