LINUX.ORG.RU

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


0

0

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

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

P.S. Язык - C


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

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

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

Pi ★★★★★
()

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

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

svu ★★★★★
()
Ответ на: Re: Управление памятью в Glib/GTK+ от svu

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

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

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

mint
()

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

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

anonymous
()
Ответ на: Re: Управление памятью в Glib/GTK+ от mint

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

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

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

Deleted
()

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

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

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