Я хотел бы обернуть мои вызовы malloc/realloc в макрос, который остановит программу, если метод вернет NULL
я могу безопасно использовать следующий макрос?
#define SAFEMALLOC(SIZEOF) (malloc(SIZEOF) || (void*)(fprintf(stderr,"[%s:%d]Out of memory(%d bytes)\n",__FILE__,__LINE__,SIZEOF),exit(EXIT_FAILURE),0))
char* p=(char*)SAFEMALLOC(10);
он компилируется, он работает здесь с SAFEMALLOC(1UL)
и SAFEMALLOC(-1UL)
, но это безопасный способ сделать это?
SIZEOF
оценивается дважды, когда вызов терпит неудачу (не катастрофа, поскольку программа завершает работу, но все же...). - person Kninnug   schedule 30.04.2013