아래 주소에 Delphi의 큰 버그에 대한 단락을 썼습니다. 굳이 읽을 필요는 없습니다. 여기서 반복하겠습니다.
하지만 아래 댓글을 보면 알 수 있을 것 같습니다.
http://www.csdn.net/Develop/read_article.asp?id=12525
원래 코드는 이렇습니다.
PROcedure TForm1.Button1Click(Sender: TObject);
var
문자열 :TStringList;
시작하다
할당되지 않은 경우(문자열)
시작하다
문자열 :=TStringList.Create;
// ShowMessage('sfdasfd'); 이런 저런 문장을 추가하면 문제 없겠죠, 그렇지 않으면 ㅎㅎ.
끝;
문자열.무료;
문자열 := nil;
끝;
사실 제가 집중하고 싶은 라인은 단 하나뿐입니다. 바로 strings.Free; 라인입니다.
그런데 불필요한 문제를 많이 일으키는 다른 코드가 있는 경우가 종종 있습니다. 여러 번 강조했지만 핵심 코드는 여전히 다른 화환에 가려져 있습니다. 그리고 늘 오해를 불러일으키기 때문에
다음과 같이 코드를 다시 작성합니다.
절차 TForm1.Button1Click(Sender: TObject);
var
문자열 :TStringList;
시작하다
문자열.무료;
끝;
실제로 이 코드의 TStringList 클래스는 원하는 클래스로 대체될 수 있습니다.
이렇게 하면 CPU 감시창을 사용하면 물건을 찾을 수 있지만, 사용하지 않을 경우에는 Ctrl+F2만 누르면 됩니다.
프로그램을 종료합니다.
이 제목도 뭔가 멍청한 뜻인지는 모르겠지만 어쨌든 중국어로 되어있습니다. 당신과 나는 둘 다 이해합니다.
사실, 이 코드의 목적은 객체의 올바른 사용에 주의를 기울이도록 하는 것입니다. 이 코드에서 오류가 발생하는 이유는 다음과 같습니다.
나는 이것이 실제로 컴파일러의 누락이라고 생각하지만, 클래스와 객체의 메모리 구조에 대한 연구가 없다면 먼저 놔두고 두 번째로 연구하는 것이 좋습니다.