g_value_init/をいつ呼び出す必要がありますg_value_resetか?
現在、すべての場合にg_value_initandを使用しg_value_resetていますが、高速化できるかどうかを知りたいです。
私は少なくともそれを知っています:
- オブジェクトまたはボックス化された型を使用する場合
g_value_reset、GValue が参照を取得したり、 の場合は複製されたりする可能性があるため、必ず を呼び出す必要がありGBoxedます。 guintorのような基本型をgboolean(メモリ管理なしで)使用する場合g_value_reset、メモリを割り当てる必要がないため、理論的には呼び出しは不要です。私も実装を読んだことがありますが、それが真実であることが証明されています。ただし、作成者が変更を導入してメモリの割り当てを開始する (または単にトレースを実行する) と、メモリ リークが発生するのではないかと心配しています。
以上が私の現在の研究です。おそらく公式ドキュメントの参照に裏付けられて、それを広げたいと思います。前もって感謝します。