int* p = malloc(sizeof(int)); FREE(&p);
#define FREE(ptr) do { \ __typeof__(ptr)* const __x = &(ptr); \ free(*__x); *__x = NULL; \ } while(0)
int* p = malloc(sizeof(int)); FREE(p);