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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.