2012-04-17 2 views
0

저는 QUdpSockets를 사용하는 응용 프로그램을 프로그래밍하고 있습니다. 운영자가 새로운 소켓을 작성하기 때문에 메모리 문제가 발생하므로 new를 닫은 후에 삭제하는 것이 필요한지 알고 싶습니다. 아래QUpdSockets를 삭제해야합니까?

코드 :

socket = new QUdpSocket(this); 
socket->bind(); 
connect(socket, SIGNAL(readyRead()), this, SLOT(getResponse())); 

socket->close(); 
delete socket; //Do I have to do this to free the mem? 

도움말 감사합니다.

+2

얼마나 자주이 작업을 수행하고 있습니까? 부모없이 소켓을 생성 한 다음 코드 에서처럼 명시 적으로 삭제할 수 있습니다. 그렇지 않으면 부모 객체가 삭제 될 때까지 메모리를 삭제하지 않습니다. – Nick

답변

1

무엇에 따라 달라집니다 this입니다. 그것이 파괴되면 언제든지 QUdpSocket도있을 것입니다.

socket->deleteLater(); 

을 그리고 네, 당신이 더 이상 필요하지 않을 때 소켓을 파괴하는 것이 좋습니다 :

+0

감사합니다. 이제 소켓이 부모가 올바르게 삭제한다는 것을 알게되었습니다. – AZorrozua

1

은 즉시 더 이상 소켓을 필요로하지 않는 한 당신은 호출 할 수 있습니다.

다른 해결책은 'this'를 삭제하는 것이므로 소켓도 삭제됩니다.

0

소켓으로 작업을 완료했다면 삭제해야합니다. 이렇게하면 안전한면에 있습니다. 또한 그것은 다치게하지 않습니다. 그러나 이미 "이"소켓의 파괴를 위해 걸릴 것이라고 지적 했으므로 (http://doc.qt.io/qt-4.8/qobject.html#QObject 참조).

관련 문제