问题标签 [uthash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
347 浏览

c - 使用 struct 作为键修改示例时出现 UTHash 分段错误

我正在尝试通过修改标准密钥类型、结构密钥示例来使用 UTHash,以达到以下链接中的目的:

这是我修改后的代码(精简以显示我将问题隔离到的位置)

请注意,我在 main 中注释掉了变量 d。运行下面的代码没有问题,但是我取消注释代码的那一刻会引发分段错误。对我来说,这表明发生了如此多的越界错误,以至于操作系统仅在代码具有特定大小/组织时才会出现(这就是为什么注释掉看似不相关的变量可以防止错误的原因)。

我不知道自己做错了什么,因为据我所知,我正在按照给出的示例进行操作。看着 Valgrind 我得到以下信息

我做错了什么还是UTHash的问题?如果它是 UTHash,我可以用于 C(不是 C++)的另一个哈希表库是什么?

为了简单起见,我从下面引用的源中复制了 UTHash 示例代码

0 投票
1 回答
226 浏览

c - uthash 将新条目添加到哈希图

我想用uthash创建一个哈希图。

我希望键和值是一个结构,包含一个字符串和一个 size_t,如下所示:

哈希表本身如下所示:

为了向地图中添加新条目,我编写了一个名为 add_entry() 的新函数:

但是,在初始化并调用 add_entry()...

...HASH_FIND 没有找到添加的条目:

find_me 为 NULL。

我按照官方用户指南中使用结构作为密钥的说明进行操作。

我哪里错了?

0 投票
1 回答
85 浏览

c - HASH_ADD 方法不会将新元素添加到哈希表中。使用 utash.h

根据此处找到的文档,我用 C 编写了以下代码:

adj_hash_table.h

adj_hash_table.c

当我使用编译它:gcc -g -Wall -o adj_hash_table adj_hash_table.c然后使用运行它时./adj_hash_table,我得到以下输出:

但我期望:

这让我觉得这HASH_ADD行不通。这里的例子对我来说很好。我究竟做错了什么?另外,我的free_table方法正确吗?谢谢 !!