유닛(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는 엔터 키를 누른 후(프로그램이 종료될 때) 실행됩니다.
Previous: 유닛 및 프로그램 파일 확장자 정리
Next: 유닛 간 상호 참조