Initialization과 finalization

유닛(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는 엔터 키를 누른 후(프로그램이 종료될 때) 실행됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다