我正在使用glib中的GHashTable,我想逐个删除一个键值对。如docs中所述,当调用g_hash_table_remove()时,需要在动态分配密钥和值时释放密钥和值。但是我怎样才能得到一个指向键的指针,这样我就可以释放它呢?
编辑:我考虑过使用g_hash_table_new_full,但我对GHashTable的使用太少,以至于我认为这是过度的。我宁愿手动释放钥匙。
编辑:正如Keine Lustg_hash_table_new_full所指出的,它的性能不应该降低。如果不需要,您还可以为其中一个销毁函数传递NULL

最佳答案

当在哈希表中删除条目时,一个简单的free关联数据的方法是将free函数传递给g_hash_table_new_full

GHashTable = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);

参数
hash-func:从键创建哈希值的函数
key_equal_func:检查两个键是否相等的函数
key_destroy_func:释放为密钥分配的内存的函数
从GHashTable中删除条目时使用,否则为空
想提供这样的功能。
value_destroy_func:释放分配给
从GHashTable中删除条目时使用的值,如果
不想提供这样的功能。

关于c - 获取对存储在GHashTable中的 key 的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45652771/

10-11 16:22