LINUX.ORG.RU

Управление памятью в Glib/GTK+


0

0

ПРивет всем! Подскажите пожалуйста, в каких случаях надо вызывать g_object_unref() или g_free() для возвращаемых функциями GTK+/Glib значений? Строк, виджетов, например...

Официальную документацию читал, но сомнения есть всё таки))

P.S. Язык - C


если функция является вида g_blah_blah_new

это вроде как интуитивно понятно

Pi ★★★★★
()

Все, что является наследником gobject - надо g_object_unref. Если оно просто кусок памяти - g_free.

svu ★★★★★
()
Ответ на: комментарий от svu

Спасибо, уже что-то :)

Наверно, последний вопрос по сабжу - когда я делаю gtk_widget_destroy( some_widget ), где some_widget есть окно ( от gtk_window_new() ), надо ли мне unref-ить его и всех его child-ов?

mint
() автор топика

В общем случае надо в сорцы библиотеки подсматривать. В доках Gtk+ часто забывают уточнить правила освобождения.

anonymous
()
Ответ на: комментарий от mint

после gtk_widget_destroy ничего уже делать не нужно.

g_object_unref - применительна только к GObject. она уменьшает счетчик ссылок на объект и если он доходит до ноля, то вызывает деструктор этого объекта.

Deleted
()

всем спасибо, вроде разобрался:)

mint
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.