Comment Comment by Thorrez Good point. But it seems like it would require usage like this: int* p = malloc(sizeof(int)); FREE(&p); What if we instead define the macro like this: #define FREE(ptr) do { \ __typeof__(ptr)* const __x = &(ptr); \ free(*__x); *__x = NULL; \ } while(0) Then make usage slightly shorter, as well as more similar to free(): int* p = malloc(sizeof(int)); FREE(p); parent Thorrez 6 years ago