I asked on comp.lang.c and this is a good example when your program could crash on using a freed pointer. its a non existing platform but its still UB
Consider a platform that has separate data and address registers. Also
consider that this platform has virtual memory, and that free() unmaps
the passed-in pointer from the address space. The mere act of loading
the p1 pointer into a register in order to compare it to another
platform could cause a bus error, crash the program, etc.