Опубликован перевод на русский язык цикла статьей David Chisnall "Writing Insecure C", в которых подробно рассматриваются различные аспекты написания безопасного кода на языке программирования C.
#define MALLOC(x,y) do { y malloc(x); if (!y) abort(1); } while(0)
1. Это что за конструкция "y malloc(x);" матернётся как error: expected ';' before 'malloc' 2. И как следствие предыдущей - if(!y) будет - warning: statement with no effect 3. У abort() не бывает аргументов!
{
void *new_ptr; size_t new_size = nmemb * size; if (SIZE_T_MAX / nmemb < size) return NULL; return realloc(ptr, new_size); }
А если использовать вот так???
int main(void){ char *a; xrealloc(a, 0, -1); }
:)