单元(Unit)还可以包含 initialization(初始化段) 和 finalization(收尾段)。
这两段代码会分别在程序启动、程序退出时自动执行。
initialization:程序启动、单元被载入内存时执行,早于主程序代码;多个单元会按引用顺序依次执行各自初始化段。
finalization:程序正常关闭、进程销毁前执行;和初始化执行顺序相反。
作用
Initialization:注册类、打开全局文件 / 数据库连接、初始化全局变量、注册组件;
Finalization:释放内存、关闭句柄、保存配置、注销注册资源,避免内存泄漏。
我们修改上节课中的我们的单元文件pas:MyUnit.pas
unit MyUnit;
{$ifdef FPC}
{$mode objfpc}{$H+}{$J-}
{$endif}
interface
procedure MyProcedure(const A: Integer);
function MyFunction(const S: string): string;
implementation
procedure MyProcedure(const A: Integer);
begin
WriteLn('A + 10 is: ', A + 10);
end;
function MyFunction(const S: string): string;
begin
Result := S + 'strings are automatically managed';
end;
// 初始化段:程序加载本单元时自动运行
initialization
WriteLn('Hello world!');
// 收尾段:程序正常退出前自动运行
finalization
WriteLn('Goodbye world!');
end.Code language: JavaScript (javascript)
就在底部增加了上面两个段落

执行结果

最后的Goodbye world 是要在按一下回车后(程序要结束)才会执行的。