델파이 코딩을 하다 보면 클래스나 컨트롤 등을 Create 하는 일이 빈번합니다.


근데 그 사이에 매개변수를 집어넣어 생성하곤 하는데 어느 때 어느 걸 사용해야 하는지 명확하지 않아서 정리하려고 합니다.



첫 번째 Application으로 생성하는 경우..  TApplication을  소유주로 한다는 것입니다. 


그렇다면 2번째는 해당 메소드의 사용 인스턴스가 소유주가 됩니다.


마지막으로 nil 같은 경우엔   null이죠.. 없다는 것인데요..        주인이 없기 때문에 문제가 있습니다.



따로 해제하지 않는다면 메모리에 쌓이게 되는 문제가 발생합니다.    사용을 다 하셨으면  Ttestbtn.free; 처럼 해제를 해 줘야 한다는 것입니다.






1의 예를 보면 소유주 Application.Componts 배열 안에  Form2가 들어간 것을 확인할 수 있습니다.


결론은 Create 시 사용한 매개변수의 소유주components에 관리 목록으로 지정된다는 것입니다.


하지만 이런 거 잘 몰라도 프로그램하는데 큰 문제는 없을 것 같습니다.  하지만 nil로 선언한 것은 따로 free로 해제하지 않으면 메모리 누수가 발생한다는 것입니다.




참고:Delphi Begin ...End






블로그 이미지

delphi개발자 메르세데쓰

C#,delphi,db,network,server,it 개발자 메르세데스입니다

댓글을 달아 주세요