是否可以使用GArray作为GHashTable中的值?
问题描述:
我正在尝试使用GHashTable将字符串映射到GArrays。到目前为止,我还没有成功。是否可以使用GArray作为GHashTable中的值?
我宣布哈希表所示:
hash_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
而且我GArray像这样:
array = g_array_new(1, 1, sizeof(uint64_t));
我试图插入数组的哈希表。插入它后,我检查它是否在那里。关键似乎在那里,但其哈希值为NULL
。
GArray *old_array;
g_hash_table_insert(hash_table,
(gpointer) g_strdup(path),
(gpointer) array);
if (g_hash_table_lookup_extended(hash_table,
path, NULL, (void **) old_array)) {
printf("stored value is %p\n", old_array);
}
是我想做的事情吗?如果是这样,我该如何避免NULL
的值?
答
新人的错误。需要通过&old_array
。
GArray *old_array;
g_hash_table_insert(hash_table,
(gpointer) g_strdup(path),
(gpointer) array);
if (g_hash_table_lookup_extended(hash_table,
path, NULL, (void **) &old_array)) {
printf("stored value is %p\n", old_array);
}