2012-04-17 32 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もそうです。すぐにあなたが呼び出すことができるもうソケットを必要としないよう

+0

ありがとうございます。今は、親がそうするようにソケットが正しく削除されることに気付きました。 – AZorrozua

1

socket->deleteLater(); 

そして、あなたはもうそれを必要としないときはい、それはソケットを破壊すると良いでしょう。

他の解決策は「this」を削除することです。ソケットも削除されます。

0

ソケットで作業した場合は、削除する必要があります。あなたは安全な側にいます。またそれは傷つけません。しかし、既に「これ」がソケットの破壊に掛かると指摘されています(http://doc.qt.io/qt-4.8/qobject.html#QObject参照)。

関連する問題