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
}
2 番目の呼び出しは、オブジェクトが存在しない場合でもオブジェクトを見つけます。上記のコード セグメントで何が問題になる可能性がありますか?