?

Log in

wxWidgets
developers community
Утечка памяти? 
02-06-2011 17:00
Mish
Похоже, кроме меня, тут никого нет :)

Такой глупый вопрос - откуда в таком простом месте утечка памяти:

        for(vector<bmp>::iterator i = dir.begin(); i != dir.end(); ++i) // Список файлов изображений, bmp - моя структура, неважно
        {
            wxImage img(i->file);
            if (img.IsOk())
            {
                i->w = img.GetWidth();
                i->w = img.GetHeight();
            }
        }

Т.е. я просто, имея список, собираю размеры. Не очень-то эффективно (загружать весь рисунок), но как справиться иначе, особенно с разными форматами, не придумал.

Случайно, тестируя, натравил на каталог, где эти картинки лежат тысячами :( Ну, решил попробовать в экстремальных условиях. Но вскоре машина стала откровенно тормозить, а диспетчер задач показывать, что у меня этой программой съедено полтора гига памяти...

С чего бы? Или деструктора по умолчанию недостаточно? Или я что-то не так понимаю, как работает освобождение памяти? (Там не сборка мусора применяется?...)

И как корректно решить мою задачу, чтоб не влезать в такие вот неприятности?
UPD: Компилятор Open Watcom 1.9. Я тут его средствами heapwalk прошелся - новая информация к размышлению: использованная память стоит на месте, а вот свободная (но забранная программой) растет и растет... Т.е. какая-то хитрая дефрагментация, что ли?...

Comments 
03-06-2011 07:20 (UTC)
используйте нормальный язык со сборкой мусора и биндинг для wx.
питон + wxPython, например.
04-06-2011 11:50 (UTC)
А еще лучше пойти грузчиком работать, там такой проблемы вообще нету, да?
This page was loaded Feb 22nd 2017, 9:25 am GMT.