2016-08-16 14 views
0

Я бы извинился перед всем своим английским языком не очень хорошо. Когда я загружаю свои виджеты GTK с помощью gtk_builder_add_from_files (builder, «interface.xml» & err) У меня нет ошибок, но у меня эти утечки памяти появляются:Утечка памяти GTK-Builder при загрузке файла, созданного с помощью Glade

В течение двух дней я ищу решение, но напрасно. Или у кого-то была бы идея, которая уже столкнулась с проблемой?

Leak: 0x7fa3c9d49dd0 size=16 zone: DefaultMallocZone_0x109274000  length: 3 "hfs" 
Leak: 0x7fa3c9e25a20 size=16 zone: DefaultMallocZone_0x109274000  length: 7 "<ctrl>v" 
    Leak: 0x7fa3c9e28280 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>F" 
    Leak: 0x7fa3c9e569f0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
    Leak: 0x7fa3c9e5d5f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>x" 
    Leak: 0x7fa3c9e5f910 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
    Leak: 0x7fa3c9e6e930 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
    Leak: 0x7fa3c9e76400 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
    Leak: 0x7fa3c9e8c3f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9ea84c0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9ea9df0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9eaadf0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>F" 
Leak: 0x7fa3c9eaf990 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9eaf9a0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9eaf9f0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9eb0030 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>v" 
Leak: 0x7fa3c9eb1540 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>c" 
Leak: 0x7fa3c9eb21f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>f" 
Leak: 0x7fa3c9eb2460 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9eb25f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9eb2df0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9eb49f0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9eb75f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>v" 
Leak: 0x7fa3c9eb7bf0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>f" 
Leak: 0x7fa3c9eb83f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9ec11f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9ec25f0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9ec31f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>c" 
Leak: 0x7fa3c9ec3df0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>c" 
Leak: 0x7fa3c9ecab90 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>c" 
Leak: 0x7fa3c9ecd5f0 size=16 zone: DefaultMallocZone_0x109274000 length: 14 "<shift><ctrl>a" 
Leak: 0x7fa3c9ecd9f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>a" 
Leak: 0x7fa3c9edc9f0 size=16 zone: DefaultMallocZone_0x109274000 length: 7 "<ctrl>x" 
Leak: 0x7fa3c9f07fb0 size=16 zone: DefaultMallocZone_0x109274000 length: 12 "/dev/disk0s2" 
Leak: 0x7fa3c9f9c500 size=16 zone: DefaultMallocZone_0x109274000 length: 10 "(646, 267)" 

Я получаю это журналы с программой "утечки" на Mac OS X El Capitan и я не могу использовать Valgrind. Он потерпел крах, когда попытался запустить программу. :(

Спасибо за ваше время и хороший день.

+0

Вы уверены, что это _true_ утечки, а не только память, которая останется выделенной для срока службы приложения? Для приложения более эффективно не беспокоить явную свободную память, необходимую ей на протяжении всего жизненного цикла - когда она выйдет, ОС все равно освободит все. Посмотрите справочное руководство Gtk +; он может иметь дополнительный режим отладки, в котором он явно освобождает все, чтобы сделать проверки на утечку счастливыми. – zwol

ответ

0

Ваш .gtkbuilder XML является правильным в первую очередь? Он загружается как есть, без надлежащей предварительной проверки или обработки ошибок и любая ошибка может и приведет к утечке или сбою. Рассмотрите возможность проверки кода возврата gtk_builder_add_from_file(). Если это ноль (что означает ошибку), то у вас есть проблема.

Также убедитесь, что вы не потеряли указатели на свой GtkBuilder. вы хотите удалить его g_object_unref().

Кроме этого вам не следует беспокоиться о том, как GtkBuilder управляет памятью.

+0

Здравствуйте, я уже проверяю свой код кодом возврата gtk_builder_add_from_file(), и я использовал g_object_unref() после создания моих виджетов. Возможно, XML-генерация с помощью Glade неверна ... Я прочитал в документации GNOME GTK + 3, чем неправильный файл может вызвать утечку памяти. Благодарим вас за ответ и ваше время. – tiboitel