When to free a GObject?

glib, gobject, memory-management

Solution

That tutorial describes how and when a custom-made GObject class should free its internal data. Specifically, the difference between the `dispose` method and the `finalize` method.

When you create a GObject, you should only unref it and never free it, or you'll bypass the reference counting system altogether and maybe cause a crash somewhere else.

Problem

When to unref a GObject and when to free it? The GObject tutorial states that a GObject should be unrefed and freed, but shouldn't a GObject actually free itself if and only if its refcount drops to 0?

Original source