LINUX.ORG.RU

Как GArray из GLib работает с наследниками GObject?

 , , refcounting


1

2

читаю статью:
https://www.ibm.com/developerworks/linux/tutorials/l-glib/index.html

И мне непонятно, как программист должен поступать с объектами, помещаемыми в массив GArray.

Должен ли программист увеличивать объектам счётчик ссылок перед помещением в массив? Кто будет счётчик ссылок объектов уменьшать, если сам массив при своём уничтожении этого не делает?

тут:
https://developer.gnome.org/glib/stable/glib-Arrays.html#g-array-free
написано, что может существовать функция element_free_func

У меня по задумке каждая рама должна хранить список мам, находящихся поблизости.

В общем, где примеры использования Array с наследниками GObject?

У меня есть подозрение, что на самом деле нужно использовать GPtrArray и именно у него есть та функция удаления элементов. А то, что про функцию упоминается в простом GArray - это бага в документации.

UPD: не бага, там есть функция g_array_set_clear_func
https://developer.gnome.org/glib/stable/glib-Arrays.html#g-array-set-clear-func

Теперь я не знаю, что мне выбрать - GArray или GPtrArray

советуют брать второе:
https://stackoverflow.com/questions/14684739/free-memory-for-elements-of-garray

★★☆

Последнее исправление: Einstok_Fair (всего исправлений: 5)

Тщательно подумав (и получив пару Access Violation) я пришел к выводу, что рамы не используют матерей. Их жизни управляются чем-то другим, и привязанность к раме не должна мешать смерти мамы.

Поэтому не надо счётчики увеличивать, надо подписываться на события от мамы, и на события от рамы.

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