Название: QList + потоки очистка памяти Отправлено: vanchen от Апрель 25, 2010, 13:44 Здравствуйте, уважаемые!
У меня 2 потока. один пишет в QList другой оттуда читает и обрабатывает. Работают на mutex и waitcondition. Все работает, все хорошо. НО! Как только размер List сильно возрастает например до 1 гига. Память после его обработки не очищается или очищается не полностью. Причем так происходит когда с данными работает функция Parce. Вот код: Обрабатывающий поток: Код: void ReadThread::run() Читающий поток: Код: void ScanThread::run() Функция parce: Код: bool ReadThread::parce(const QString &sourceIP, const QString &targetIP,uchar *pkt_data, ushort & portS, ushort & portD, pcap_pkthdr & header) Код: void ReadThread::destIPAdd(const QString &IP, const ushort &port) Функции работы со списком: Код: struct packet Если убрать все функции обработки и оставить только заполнение + обработку все работает отлично. Потоки самозабвенно сражаются за память, все чиститься. Но с функцией память либо вообще не чиститься либо не полностью. Причем!!! Если в функции обработки добавить : QString Data=""; а остальное убрать, куски памяти все равно чиститься не будут! Сломал на этом мозг! Работает все это на Linux. За ответы заранее спасибо!) |