,하지만 당신은 그 객체를 생성 한대로, 반대는 당신이 원한다면 당신이 그들을 무료 방법이다.
개체가 단순히 힙에서 메모리를 소비하는 경우 Windows에서 프로세스에서 사용하는 모든 메모리를 회수하도록 할 수 있으며이 경우 부작용 (작은 응용 프로그램이없는 경우) 빠릅니다.
그럼에도 불구하고 대부분의 양심적 개발사는 그들이 만드는 모든 물건을 완전히 무료로 선택합니다. 이 같은 개체를 만든 경우 :
x := TMyObject.Create;
을 ... 당신은 무료 호출하여 무료 : 객체가 부모가 소유 한 구성 요소입니다
x.Free;
경우, 당신은 할 필요가 없습니다 그것을 해방하십시오.
객체가 인터페이스 된 객체 (참조 계산) 당신은 단순히 이런 참조의 가자 경우 : 문제의 유형은 값 타입 (더블, 정수) 다음 돈이면
x := nil;
을 그걸 풀어 줘야 해.
문제의 유형이 자동으로 관리되는 경우 (기록, 문자열) 자유롭게 풀 필요가 없습니다.
개체가 더 많은 개체를 할당하는 경우 해당 개체를 소멸시키는 올바른 위치는 해당 개체의 소멸자입니다.
다음은 규칙입니다. 그들을 따라 가면 누출은 없을 것입니다.콘솔 애플리케이션은 지정하지 않은 방식으로 종료됩니다. 당신의 불특정 질문에 대한 어떤 마법의 답변을 기대 했습니까? 그것이 나 였다면 응용 프로그램이 정상적으로 종료되고 정상 종료 중에 자원이 해제된다는 것을 확인했습니다. 비정상적으로 종료되면 작성한 "try..finally"블록이 실행되지 않습니다. 종료 코드를 통해 한 단계 씩 실행하여 전혀 실행되지 않는지 확인하는 것이 좋습니다.
코드 예제를 게시 한 경우보다 구체적인 대답이 가능했을 것입니다.
"내 콘솔 응용 프로그램이 종료되면 메모리를 확보하는 가장 좋은 방법은 무엇입니까?" 실제로 아무것도하지 않는 것이 가장 좋다는 좋은 주장이 있습니다. 시스템이 메모리를 회수하도록하십시오 –