리소스 할당이 중단되지 않는 Delphi 애플리케이션 작성
핵심은 프로그램에 자원이 할당되면 장애가 발생하더라도 프로그램이
프로그램은 또한 점유된 자원을 해제할 수 있어야 합니다.
파일, 메모리, WINDOWS 리소스 및 개체는 수시로 추가되어야 하는 것입니다.
리소스가 해제되도록 주의하세요. 다음 이벤트 제어 코드 예에서는
메모리가 먼저 할당된 후 오류가 발생하여 더 이상 실행되지 않습니다.
메모리를 해제하는 프로그램 코드:
PROcedureTForm1. ButtonlClick(보내는 사람:Tobject
);
바르
포인터1: 포인터;
정수1,숫자제로:정수;
시작하다
숫자제로:Κ0;
GetMem(Pointer1, 1024) {1K 메모리 리소스 할당}
Integer1: Κ5divNumzero {이 문장은 나누기 오류를 발생시킵니다.
오류}
FreeMem (Pointer1, 1024) {이 문장은 여기서 실행되지 않습니다.
알았어}끝;
대부분의 오류는 이렇게 명확하지 않지만 위의 예에는 중요한 내용이 포함되어 있습니다.
한 가지 요점: 오류가 발생하면 프로그램 실행이 모듈 밖으로 점프하고 후속 리소스가 해제됩니다.
프로그램 코드가 더 이상 실행되지 않습니다. 위 예의 FreeMem이
GetMem이 차지하는 메모리 리소스를 해제하려면 코드를 리소스에 넣어야 합니다.
보호 모듈.
곡선형 리소스 보호 모듈의 형식은 다음과 같습니다.
{자원의 할당}
노력하다
{자원의 활용}
마지막으로
{자원 공개}
끝;
위의 시도. . . finally 모듈을 사용하면 프로그램이 항상 fi를 실행할 수 있습니다.
마지막으로 보호된 모듈에 오류가 있더라도 섹션에 모든 프로그램 코드가 있습니다.
에서 생산되었습니다. try 섹션의 코드 조각이 실행될 때 오류를 발생시키는 경우 다음을 실행하십시오.
실행 중에 오류가 발생하지 않으면 해당 줄은 finally 섹션으로 바로 이동합니다.
프로그램은 정상적인 순서로 실행됩니다.
다음 이벤트 제어 코드 예에서는 메모리가 먼저 할당된 다음 할당됩니다.
오류가 발생했지만 메모리를 해제한 프로그램 코드는 계속 실행되었습니다.
절차TForm1. Button1Click(보내는 사람:T객체
);
바르
포인터1: 포인터;
정수1,숫자제로:정수;
시작하다
숫자제로:Κ0;
GetMem(Pointer1, 1024) {1K 메모리 리소스 할당}
노력하다
Integer1: Κ5divNumzero {이 문장은 나누기 오류를 발생시킵니다.
오류}
마지막으로
FreeMem(Pointer1,1024);{여기서 이 문장은 계속 실행됩니다.
좋아요}
끝;
끝;
프로그램이 사용된 리소스를 해제하는지 확인하는 방법은 프로그래밍에서 중요한 문제입니다.
이는 프로그래밍하는 동안 연습하고 주의를 기울여야 하는 매우 중요한 문제입니다.