获取对存储在 GHashTable 中的键的引用
Get reference to key stored in GHashTable
我正在使用 glib 中的 GHashTable,我想通过键删除一个键值对。如调用 g_hash_table_remove()
时的 docs 中所述,您需要在动态分配时自行释放键和值。但是我如何获得指向密钥的指针以便释放它?
编辑:我考虑过使用 g_hash_table_new_full
,但我对 GHashTable 的使用太小,以至于我认为这有点矫枉过正。我宁愿手动释放密钥。
编辑:正如 Keine Lust 所指出的,g_hash_table_new_full
的性能应该不会差。如果不需要,您也可以为其中一个销毁函数传递 NULL
。
在哈希 table 中删除条目时 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: a function to create a hash value from a key
key_equal_func: a function to check two keys for equality
key_destroy_func: a function to free the memory allocated for the key
used when removing the entry from the GHashTable, or NULL if you don't
want to supply such a function.
value_destroy_func: a function to free the memory allocated for the
value used when removing the entry from the GHashTable, or NULL if you
don't want to supply such a function.
我正在使用 glib 中的 GHashTable,我想通过键删除一个键值对。如调用 g_hash_table_remove()
时的 docs 中所述,您需要在动态分配时自行释放键和值。但是我如何获得指向密钥的指针以便释放它?
编辑:我考虑过使用 g_hash_table_new_full
,但我对 GHashTable 的使用太小,以至于我认为这有点矫枉过正。我宁愿手动释放密钥。
编辑:正如 Keine Lust 所指出的,g_hash_table_new_full
的性能应该不会差。如果不需要,您也可以为其中一个销毁函数传递 NULL
。
在哈希 table 中删除条目时 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: a function to create a hash value from a key
key_equal_func: a function to check two keys for equality
key_destroy_func: a function to free the memory allocated for the key used when removing the entry from the GHashTable, or NULL if you don't want to supply such a function.
value_destroy_func: a function to free the memory allocated for the value used when removing the entry from the GHashTable, or NULL if you don't want to supply such a function.