Здравствуйте. Прошу помочь в поиске решения проблемы. Имею устройство с которым связываюсь по Tcp стучусь на 10000-й порт. Порт точно открыт соединение точно происходит. Далее идет сеанс обмена данными(или не идет, по ситуации) после чего соединение закрывается.
Приложение вроде работает но со временем приложение начинает есть все больше и больше памяти.
В связи с чем написал небольшую аппликуху, которая устанавливает и тут же рвет соединение с переодичностью в 1 секунду.
Сомнения подтвердились память течет.
Вопрос как сделать так чтобы не текла.
Течет в процессе работы приложения. new QTcpSocket вызывается только один раз и потому эта память в расчетах не участвует.
Версия qt 4.7.4 Среда Виндовс.
Под линем еще не проверял. Но линуксовая тачка с конечным приложением будет стоять в закрытом шкафу и хочется сделать ее максимально стабильной.
Листинг: main.cpp
#include <QtCore/QCoreApplication>
#include <nettest.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
nettest nt;
nt.timerid = nt.startTimer(20000);
return a.exec();
}
nettest.h
#ifndef NETTEST_H
#define NETTEST_H
#include <QObject>
#include <QtNetwork>
class nettest : public QObject
{
Q_OBJECT
public:
explicit nettest(QObject *parent = 0);
QTcpSocket * sock;
int timerid;
void get_currentdata(QString ipaddr, int port);
signals:
public slots:
void timerEvent(QTimerEvent * te);
};
#endif // NETTEST_H
nettest.cpp
#include "nettest.h"
nettest::nettest(QObject *parent) :
QObject(parent)
{
sock = new QTcpSocket;
}
void nettest::timerEvent(QTimerEvent *te){
if (timerid==te->timerId()){
killTimer(timerid);
get_currentdata("192.168.0.196",10000);
timerid=this->startTimer(1000);
}
}
void nettest::get_currentdata(QString ipaddr, int port) {
sock->connectToHost(ipaddr,port);
if (sock->waitForConnected(10000))
{
sock->close();
}
}