Name
Finalization Keyword
Syntax
unitName; interfaceDeclarations... implementationDeclarations... initializationStatements... finalizationStatements... end.
Description
The finalization
section of a unit contains statements that run when the program exits
or when Windows unloads a library. Finalization sections run in the
opposite order of initialization.
Note that a unit must have an initialization
section in order to have a finalization section.
The initialization section can be empty.
Tips and Tricks
Use a
finalizationsection to clean up global memory allocation and other global settings, such as changes to global variables.Always free all memory and other resources used by the unit. The unit might be loaded into a package, and the package can be loaded and unloaded many times in a single application. Small memory or resource leaks can quickly grow to big problems if you aren’t careful.
Example
procedure ErrorHandler(ErrorCode: Integer; ErrorAddr: Pointer); begin ... // Handle runtime errors. end; // Set a new error handler, but save the old one. Restore the previous // error handler when this unit finalizes (which might be when // the application unloads the package that contains this unit, // and the application will continue to run using the old // error handler). var OldErrorProc: Pointer; initialization OldErrorProc := ErrorProc; ErrorProc := @ErrorHandler; finalization ErrorProc := OldErrorProc; end.
See Also
| Initialization Keyword, Unit Keyword |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access