Ja, Free prüft auf nil, aber lokale Variablen sind nicht unbedingt automatisch mit nil initialisiert.
Aber das sollte dir der Compiler auch sagen.
Entweder es knallt nicht, weil der Zeiger zufällig auf "irgendein" Objekt zeigt und es dann freigegeben wird, oder es knallt hoffentlich.