使用hsearch_r添加指向哈希表的指针

时间:2012-11-19 14:53:35

标签: c hashtable

我想使用hsearch_r添加指向哈希表的指针。目前它使用以下代码段(没有变量声明和检查)不起作用:

// Allocate hash table
htab = calloc( INITIAL_HASH_SIZE, sizeof(struct hsearch_data) );
hcreate_r( INITIAL_HASH_SIZE, htab );

// Add first pointer to hash table
he.key = (char *)&pointer_some_complex_struct1;
if ( hsearch_r( he, FIND, &hep, htab ) == 0) {
  he.data = pointer_some_complex_struct1->data;
  hsearch_r( he, ENTER, &hep, htab );
}

// Add second pointer to hash table
he.key = (char *)&pointer_some_complex_struct2;
if ( hsearch_r( he, FIND, &hep, htab ) ) {
  // CODE ENTERS HERE
}

第二个调用找到该对象,无论它是否存在。任何想法可能是上述代码段的问题?

1 个答案:

答案 0 :(得分:4)

问题是hsearch / hsearch_r中的键是以NUL结尾的字符串,而不是任意数据。