2016-11-17 3 views
0

GHashTableを使用して文字列をGArraysにマップしようとしています。これまでのところ、私は成功していません。GArrayをGHashTableの値として使用できますか?

私はそうのようなハッシュテーブルを宣言します。

hash_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); 

そしてそうのように私のガライ:

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の値を避けることができますか?

答えて

0

ルーキーミス。 &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); 
} 
関連する問題