C 添加到哈希表而不覆盖

C 添加到哈希表而不覆盖,c,hashtable,C,Hashtable,以下是我遇到的问题: 我能够回显设置的最后一个变量,但不能回显以前的变量。 所以如果x=Welcome,我会回显$x。。。我受到欢迎。 但是如果我做了xx=回来。。。它会删除表中存储指针的原始x,但指针指向的是一个局部变量,该局部变量可以简单地重用…您正在覆盖表指向的键和值 在节点结构中,复制指针指向的内容,以便保留不会被覆盖的副本 由于您正在处理字符串,解决此问题的一个简单方法是替换(在表_add中): 与 但是,如果执行此操作,则需要确保在释放节点之前free()。谢谢!所以,通过释放这两个

以下是我遇到的问题:

我能够回显设置的最后一个变量,但不能回显以前的变量。
所以如果x=Welcome,我会回显$x。。。我受到欢迎。
但是如果我做了xx=回来。。。它会删除表中存储指针的原始x,但指针指向的是一个局部变量,该局部变量可以简单地重用…您正在覆盖表指向的键和值

在节点结构中,复制指针指向的内容,以便保留不会被覆盖的副本

由于您正在处理字符串,解决此问题的一个简单方法是替换(在表_add中):


但是,如果执行此操作,则需要确保在释放节点之前
free()。谢谢!所以,通过释放这两个值,我是否只在执行free(p)之前执行free(键)和free(值)。
p->key = key;
p->value = value;
p->key = strdup(key);
p->value = strdup(value);