Das cafree im onClose ist eher für MDIClient-Fenster oder nicht modale Fesnter gedacht...
Modale Fenster würde ich immer selber mit einem .free ausstatten...
Delphi-Quellcode:
MyWin := TMyWin.Create(Application);
try
if MyWin.Showmodal = MROK then
MyWin.Foo;
finally
MyWin.free;
end.