gpt4 book ai didi

c++ - json_object_object_add,段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:53 25 4
gpt4 key购买 nike

我正在使用libjosn-c,如下所示,并遇到段错误错误。

如果我删除行 json_object_object_add(root, "Child", value);,则不会发生错误。

int main(int argc, char **argv)
{
json_object *root = NULL, *value = NULL;

root = json_object_new_string("My Object");
value = json_object_new_string("My Child Object");
json_object_object_add(root, "Child", value);
printf("to string =%s\n", json_object_to_json_string(root));

json_object_put(value);
json_object_put(root);

return 0;
}

我对libjson-c没有经验。感谢您的帮助!

最佳答案

如果我是你,我会阅读 documentation在开始使用库之前先了解一下它。

如上所述here json_object_object_add(root, "Child", value)value 的所有权转移给 root。这意味着您不再负责 json_object_put 它。当您 json_object_putroot 时,它的 json_object_put 就是您的

当您json_object_put 时,它的引用计数器下降到0并且它的内存被释放。当您 json_object_put root 时,它会尝试 json_object_put value 并失败,因为 value 不再存在。

如果您不希望valueroot更长寿,只需删除json_object_put(value)行即可。

如果您想在 root 释放后使用 value,请使用:

json_object_object_add(root, "Child", json_object_get(value))

关于c++ - json_object_object_add,段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33449783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com