이것만으로는 알 수 없습니다.
함수로 넘겨줬는데, 그 함수 내부에서 적절히 포인터를 관리해주게 되어있을 수도 있으니까요.
Qt를 예로 드셨는데 (C/C++이 아니라 C++입니다) Qt에서 많은 클래스들이 부모-자식 관계(상속과는 다른 부모 자식관계입니다)를 맺어서 부모가 삭제될 때 자동으로 자식들도 삭제되는 구조로 되어있습니다.
그게 적용되는 클래스인지 아닌지는 레퍼런스를 통해서 파악해야 하며, 걱정된다면 자식 클래스의 소멸자가 호출되는지 확인해보면 됩니다.
일반적으로 TreeItem은 parent와 child 구조(tree구조)로 되어 있고,
parent가 해제될 때 child를 자동으로 해제되어 지도록 클래스가 설계되어 있습니다.
(클래스를 어떻게 구현하느냐에 따라 다르겠지만 보통 그렇게 설계를 함)
그러므로 명시적으로 delete를 해 주지 않으셔도 됩니다.
이것만으로는 알 수 없습니다.함수로 넘겨줬는데, 그
이것만으로는 알 수 없습니다.
함수로 넘겨줬는데, 그 함수 내부에서 적절히 포인터를 관리해주게 되어있을 수도 있으니까요.
Qt를 예로 드셨는데 (C/C++이 아니라 C++입니다) Qt에서 많은 클래스들이 부모-자식 관계(상속과는 다른 부모 자식관계입니다)를 맺어서 부모가 삭제될 때 자동으로 자식들도 삭제되는 구조로 되어있습니다.
그게 적용되는 클래스인지 아닌지는 레퍼런스를 통해서 파악해야 하며, 걱정된다면 자식 클래스의 소멸자가 호출되는지 확인해보면 됩니다.
답변 감사합니다.
그럼 위와 같은 구조일때,
delete rootItem; 을 하면,
연쇄적으로 child들도 delete 되도록 설계되었을 수도 있단 말씀이신건가요?
TreeItem class는 대충 저런식으로 되어 있던데... gDeleteAll(childItems); 가 그러한 연쇄적인 작업을 수행하는건가요?
gilgil.net
일반적으로 TreeItem은 parent와 child 구조(tree구조)로 되어 있고,
parent가 해제될 때 child를 자동으로 해제되어 지도록 클래스가 설계되어 있습니다.
(클래스를 어떻게 구현하느냐에 따라 다르겠지만 보통 그렇게 설계를 함)
그러므로 명시적으로 delete를 해 주지 않으셔도 됩니다.
www.gilgil.net
답변 감사합니다.
큰 도움이 되었습니다.
댓글 달기