Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Октябрь 18, 2011, 19:16



Название: Утечка памяти при удалении объектов
Отправлено: merke от Октябрь 18, 2011, 19:16
Всем привет!!!

Имеется
Код
C++ (Qt)
QMap<QTcpServer*, QTcpSocket*> mainMap;

По мере работы сервера туда добавляются указатели на сокеты.

Наступает момент, когда нужно по удалять к едрени фени заданное количество сокетов:

Код
C++ (Qt)
QMapIterator<QTcpServer*, QTcpSocket*> it(mainMap);
 
 
                   for (int i = 0; i < 300; i++)
                       {
                           if (it.hasNext())
                               {
                                   it.next();
                                   it.key()->close();
                                   it.value()->close();
 
                                   QTcpSocket *so = it.value();
                                   QTcpServer *s = it.key();
 
                                   mainMap.remove(s);
 
                                   delete so;
 
                                   delete s;
                               }
                       }
 

Удаление то проходит, а память не освобождается. Не могу понять в чем дело. Подскажите, в чем может быть причина проблемы?


Название: Re: Утечка памяти при удалении объектов
Отправлено: lesav от Октябрь 18, 2011, 19:21
Освобожденная память остается зарезервированной для процесса.  Как только в системе будет дифицит памяти, ОСь ее заберет.


Название: Re: Утечка памяти при удалении объектов
Отправлено: merke от Октябрь 18, 2011, 19:22
Большое спасибо!!!