Uma Unit (Unidade) também pode conter a seção initialization (inicialização) e a seção finalization (finalização).
Esses dois blocos de código são executados automaticamente no início e no encerramento do programa, respectivamente.
initialization: Executado quando o programa é iniciado e a unidade é carregada na memória, antes do código principal. Múltiplas unidades executam suas seções de inicialização sequencialmente na ordem de referência.
finalization: Executado logo antes do fechamento normal do programa e exclusão do processo; a ordem de execução é o inverso da inicialização.
Funções
Initialization: Registrar classes, abrir arquivos globais / conexões com banco de dados, inicializar variáveis globais, registrar componentes;
Finalization: Liberar memória, fechar handles, salvar configurações, cancelar registro de recursos para evitar vazamento de memória.
Vamos editar o arquivo PAS de unidade da aula anterior: 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;
// Seção de inicialização: Executada automaticamente ao carregar esta unidade
initialization
WriteLn('Hello world!');
// Seção de finalização: Executada automaticamente antes do encerramento normal
finalization
WriteLn('Goodbye world!');
end.Code language: JavaScript (javascript)
Apenas os dois trechos acima foram adicionados no rodapé do arquivo

Resultado da execução

A linha final “Goodbye world” só será executada após pressionar Enter (quando o programa for encerrado).