Q&A

  • Free와 Destroy의 차이는?
예를 들어



procedure a;

var

a: TStrings;

begin

a:= TStrings.Create;



// a 객체 사용



ⓐ a.Free;

ⓑ a.Destroy;

end;



요렇게 있을 때... a와 b의 차이는 뭘까요???



아직도 헷갈리는군요... -.-;;;

1  COMMENTS
  • Profile
    이정욱 1999.07.09 05:26
    델파이의 도움말을 보면 이런말이 있습니다.



    일단 근본적으로는 같은 기능입니다.



    하지만 Destroy에서는 자기자신을 검사하지 않고 날려버리는것이고, Free같은 경우는 자신을 검사하고 날려버리는 것입니다.



    TObject의 Free메소트를 보시면 아래와 같습니다.



    procedure TObject.Free;

    begin

    if Self <> nil then Destroy;

    end;



    결국 Free에서도 Destroy를 호출한다는것을 알 수 있죠.



    하지만 도움말에서는 마지막에 이런말이 있군요..



    몇가지 이유가 있어서 Destroy를 직법 호출하는것은 권장하지 않는다는 군요...





    남윤혁 께서 말씀하시기를...

    > 예를 들어

    >

    > procedure a;

    > var

    > a: TStrings;

    > begin

    > a:= TStrings.Create;

    >

    > // a 객체 사용

    >

    > ⓐ a.Free;

    > ⓑ a.Destroy;

    > end;

    >

    > 요렇게 있을 때... a와 b의 차이는 뭘까요???

    >

    > 아직도 헷갈리는군요... -.-;;;