destructor Destroy; override;
__fastcall virtual ~TApplication();
Destroys the application instance and all of its associated memory.
Never call Application.Destroy or Application.Free. Instead, use the application's Terminate method to end the application.
Destroy signals that the application has been deactivated before calling the inherited destructor. It then frees memory for hooked windows, the application instance, other object instances and lists that were created at application startup or that accumulated during execution
Since the Application owns all forms (usually), it destroys these forms in its destructor.