QLocalServer/QLocalSocketの使用に問題があります。QLocalServer/QLocalSocketのメモリリーク
私はサーバーからクライアントに生のピクセルデータを送信していますが、処理中に大きなメモリリークがあります。 (私は、システム管理者に自分の目で確認する場合。)しかし、私は...その理由が何であるかを20メガバイト/ 1秒程度
メモリの増加を知ることができませんでした
以下は私のコードです。
サーバー
void qsharedServer::updateImageData(unsigned char* r_data, int r_width, int r_height, int r_step, int r_label_i){
QLocalSocket* connection = 0;
connection = clientSocket;
if (connection)
{
if (connection->isOpen())
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_7);
const char* rc_data = reinterpret_cast<const char*>(r_data);
out <<r_step*r_height<< r_width << r_height << r_step;
out.writeBytes(rc_data, r_step*r_height);
connection->write(block);
connection->flush();
}
}
クライアント
void qsharedClient::readSocket(){
QByteArray block = connection->readAll();
QDataStream in(&block, QIODevice::ReadOnly);
in.setVersion(QDataStream::Qt_5_7);
/* Read Raw Data */
char* data;
uint size;
int width;
int height;
int step;
while (!in.atEnd())
{
in >> size >> width >> height >> step;
in.readBytes(data, size);
}
emit drawData((unsigned char*)data, width, height, step);
}
これらの2つのコードがよく通信することができますが、メモリは非常に鋭く増加したときに一定のレベル以上の終端されています。
connection-> reset()またはQByteArray :: clear()..のようにしようとしましたが、うまくいきませんでした。
私の問題はありますか?
使用方法についてQTcpServer/QTcpSocket ??これは私の問題を解決することができますか?
ご意見をお寄せください。ありがとう!!
'in.readBytes'はメモリを割り当てます。あなたはどこから解放していますか? – peppe
[QLocalSocketをクリアするにはどうすればいいですか?](http://stackoverflow.com/questions/41053457/how-can-i-clear-qlocalsocket) – ElDorado