지역변수인 경우에는 SList는 nil로 초기화되지도 않지만 nil로 초기화되어 있을 필요도 없습니다. 왜냐하면 전역변수인 경우에는 여기저기서 어떻게 사용될지 알 수 없는 경우가 많지만 지역변수인 경우에는 사용처가 뻔하기 때문이지요. 단하나 주의해야 할 것은 Create()후 Free()하는 것을 빠뜨리지만 않으면 됩니다. 그러러면 다음과 같이
SList := TStringList.Create;
try
.....
.....
finally
SList.Free;
end;
try .. finally .. 로 확실하게 Free되도록 보증해 주면 다른 어려움은 거의 없으리라 봅니다.
메모리 해제시 StList.Free; 이렇게 하잖아요 흠..그런데..만약 Create 되지 않은 StringList를 해제하면 에러가 나는건 당연한데.. ^^ 그 변수가 Create되었는지 안되었는지 체크를 해서 Free를 시켜주려고 하는데... Assigned를 써도 안...
이정식
•
2001.05.25 04:57
var
SList: TStringList;
전역변수인 경우에는 SList는 nil로 초기화되어 있습니다. 그래서
if SLi...
SList: TStringList;
전역변수인 경우에는 SList는 nil로 초기화되어 있습니다. 그래서
if SList <> nil then SList.Free;
하면 되지요.
그런데 Free를 한 후에 다시 사용하는 경우도 있다면 Free할때마다 반드시
if SList <> nil then
begin
SList.Free;
SList := nil;
end;
을 해서 SList가 Free되었음을 알 수 있도록 해 주는게 중요합니다.
지역변수인 경우에는 SList는 nil로 초기화되지도 않지만 nil로 초기화되어 있을 필요도 없습니다. 왜냐하면 전역변수인 경우에는 여기저기서 어떻게 사용될지 알 수 없는 경우가 많지만 지역변수인 경우에는 사용처가 뻔하기 때문이지요. 단하나 주의해야 할 것은 Create()후 Free()하는 것을 빠뜨리지만 않으면 됩니다. 그러러면 다음과 같이
SList := TStringList.Create;
try
.....
.....
finally
SList.Free;
end;
try .. finally .. 로 확실하게 Free되도록 보증해 주면 다른 어려움은 거의 없으리라 봅니다.