In general. I've only added functions to free structs when there are things within the struct itself that need freeing.

This isn't really necessary as the caller could just call g_free() directly.