No sé qué tan buena idea es esperar hasta el final de la aplicación para destruir un objeto que posiblemente sólo se usa localmente. Para ese tipo de casos está la estructura try-finally-end, que puedes combinar con un try-except-end:
Código Delphi
[-]
IniFile := TIniFile.Create(...);
try
try
...
except
...
end;
finally
IniFile.Free;
end;
// Saludos