내 홈페이지 : http://www.tommstudio.com/
델파이 프로그래밍에서는 모든 객체를 제거하여 메모리 누출을 피해야합니다. 그러나 프로그램에주의를 기울이지 않으면 동일한 객체를 여러 번 취소 할 수 있으므로 심각한 오류가 발생하여 응용 프로그램이 충돌하거나 충돌하게됩니다.
다음 프로그램을 참조하십시오.
|
위의 예에서는 button3을 실행할 때 오류가 발생합니다. Button2가 호출 될 때 Button2가 취소되지만 Button2가 동시에 취소되므로 오류가 필연적으로 발생합니다 .
위의 오류를 피하려면 두 가지 방법이 있습니다. 첫째, 호스트가 제거되기 전에 호스트가있는 모든 구성 요소를 제거하십시오. 이 방법은 매우 간단합니다. 위의 예에서는 button2.free 및 button3.free 만 전송합니다. 둘째, button3 변수를 button3.free가 실행되기 전에 nil로 설정하십시오. 절차는 다음과 같습니다.
|
위의 프로그램에서 Button3을 설정하면 응용 프로그램이 제외되지 않은 객체의 메모리를 재사용하지 못하도록하는 것입니다. 자유 객체 메소드를 호출 할 때 객체가 nil인지 여부를 결정합니다. 자유 객체 메소드는 객체가 여전히 존재한다고 가정하고, 객체 참조를 사용하여 메모리를 할당 한 다음, 객체 메모리를 해제하고 대상이됩니다. 관련 가상 객체 방법 데이터 테이블 정보. 파괴는 객체가 존재하는 메모리 주소를 변경하지 않으므로 Destrove를 호출 한 후 메모리 주소를 테스트하는 경우에도 여전히 유효 할 수 있습니다. 따라서 객체가 NIL에 대한 객체 참조를 설정하지 않고 객체를 두 번 호출 할 때 객체 참조는 여전히 제거되기 전에 객체가 차지하는 메모리 주소를 참조합니다. 이는 오류의 이유입니다.
물론 실제 개발 과정에서 대부분의 오류는 그다지 명백하지 않으며 솔루션은 세부 사항에 따라 결정되어야하며, 간단하게 문장을 추가하여 문제를 해결하지 않습니다. 여기서 나는 단지 Jade를 끌어들이는 데 중요한 역할을하는 프로그래밍 아이디어를 설명하고 있습니다.