Qt 객체의 수명은 어떻게됩니까?Qt 객체의 수명
예를 들면 : 소켓은
QTcpSocket *socket=new QTcpSocket();
을 파괴됩니다 때? 내가
를 사용해야와 어떤 차이가 있습니까 : 나는 이것에 대해 깊은 infromation를 찾을 수 없습니다
QTcpSocket socket;
는 어떤 코멘트 나 링크를 환영합니다.
Qt 객체의 수명은 어떻게됩니까?Qt 객체의 수명
예를 들면 : 소켓은
QTcpSocket *socket=new QTcpSocket();
을 파괴됩니다 때? 내가
를 사용해야와 어떤 차이가 있습니까 : 나는 이것에 대해 깊은 infromation를 찾을 수 없습니다
QTcpSocket socket;
는 어떤 코멘트 나 링크를 환영합니다.
Qt는 메모리를 관리하기 위해 부모 - 자식 관계를 사용합니다. 부모 개체를 만들 때 QTcpSocket
개체에 부모 개체를 제공하면 부모 개체가 개체를 정리합니다. 예를 들어, 부모는 소켓을 사용하는 GUI 창일 수 있습니다. 윈도우가 죽으면 (즉, 닫혀있을 때), 소켓은 죽는다.
부모가 없으면 할 수 있지만 실제로는 delete
수작업으로 처리해야합니다.
개인적으로는 관용적 인 Qt를 고수하고 모든 개체를 부모 - 자식 트리에 연결하는 것을 권장합니다.
new
으로 할당 된 객체는 delete
과 함께 릴리스되어야합니다.
그러나 Qt를 사용하면 대부분의 객체에 부모가있을 수 있습니다. 부모는 생성자에 대한 인수로 지정합니다. 상위가 h 제되면 하위 오브젝트는 자동으로 h 제됩니다.
소켓 개체를 소유하고있는 QObject가 없기 때문에 어떤 이유로 부모를 전달하지 않으려면 QSharedPointer를 사용하여 수명을 관리 할 수도 있습니다.
삭제하려고하면 런타임 오류가 발생합니다 (QHostAddress에서 개인 회원에 액세스하려는 시도). – metdos
개인 회원 액세스는 컴파일 중에 만 런타임에 확인되지 않습니다. 어쩌면 충돌일까요? 그런 다음 개체가 두 번 삭제됩니다. –