一个应该是相同的价值但它会改变

时间:2011-05-06 15:28:47

标签: c glib

这部分可能应该总是返回相同的哈希值给每个Key不是吗? 但我发现与每次更新后更改的密钥相关的值......

如果有更新,如何修复每个密钥的相同值?

u_int64_t* ReturnValue=NULL;
u_int32_t a;
int sz;

a = nothl(as->addr32[0]);
sz = update(size);

if (ReturnValue=(u_int64_t*)g_hash_table_lookup(hashtable, (gpointer)&a))
{
g_hash_table_insert(hashtable, (gpointer)&a, (gpointer)ReturnValue);
// I didnt't use g_hash_table_replace() because it will free the key then the value change
}

else g_hash_table_insert(hashtable, (gpointer)&a, (gpointer)&sz)

1 个答案:

答案 0 :(得分:1)

我认为您不想使用对sz的引用进行插入,假设这是一个函数调用。您应该malloc这样,以便在函数调用返回后不会丢失该值(然后您指向一个曾经是函数堆栈的随机内存位置)。只需确保包含代码即可释放此内存。