Q&A

  • TStringList를 Return하는 function에서의 질문입니다.
TStringList를 Return하는 함수를 쓸때 그 Return하는 TStringList는 어떻게 Free시켜줘야 하나요.



예를 들면,



function TForm1.GetStrList(ToInt: Integer): TStringList;

var

i : Integer;

List : TStringList;

begin

List := TStringList.Create;

for i := 0 to ToInt do begin

List.Add(IntToSTr(i));

end;

Result := List;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage(GetStrList(10).Text);

end;





이렇게 하면, List라는 TStringList는 계속 메모리에 할당되어 있는게 아닙니까?

그렇다고,

Result := List;

List.Free;



이렇게 하면, Return받는 쪽에서는 이미 해제된 StrList를 읽으려 하기 때문에,

Access Error가 나고,...

function Return이 TStringList일때는, 그 TStringList가 계속 메모리에 할당되어 있는건가요?





1  COMMENTS