26
Май
2020

Gtk+ не освобождает память,причины?

Разрабатываю приложение, на 1000-ой строке внезапно вспомнил, что программу нужно проверять на утечки памяти, что и было сделано.

При первой проверке результат меня напугал: Valgrind показывал кучу ошибок и утечек памяти. После этого я тщательно проверил, доработал и протестировал свой код, проблема точно не в выделенной мной памятью(malloc), mysql тоже освобождается, в gtk тоже вроде как все освобождаю(билдер и память под GError,больше нечего освобождать).

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

До обновлениявведите сюда описание изображения

После обновлениявведите сюда описание изображения

После решил посмотреть как обстоят дела у обычного убунтовского калькулятора (по любому он gtk+ использует), и у него абсолютно та же проблема.

введите сюда описание изображения

Получается, чем больше мы пользуемся калькулятором, тем больше он жрёт ресурсов и нагружает систему.

Вопрос: Это проблема с Valgrind или gtk+? Объясните причину, может быть это абсолютно нормально, но тогда почему?

Источник: https://ru.stackoverflow.com/questions/1131973/gtk-%D0%BD%D0%B5-%D0%BE%D1%81%D0%B2%D0%BE%D0%B1%D0%BE%D0%B6%D0%B4%D0%B0%D0%B5%D1%82-%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C-%D0%BF%D1%80%D0%B8%D1%87%D0%B8%D0%BD%D1%8B

Share

Тебе может это понравится...