Бих искал да обвия извикванията си към 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