首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jansson json_decref意外行为

jansson json_decref意外行为
EN

Stack Overflow用户
提问于 2018-05-18 14:34:20
回答 1查看 561关注 0票数 0

我正在为一个C项目使用jansson库。

我在理解如何使用衰老时遇到了一些问题。它是否在每个新的json_t参数之后使用?据我所知,詹森将借用参考资料,使这更简单。

如果我运行这个程序并检查a_id和a_test的值,它们是相同的。我预期a_test会出现错误或null。

我尝试了同样的想法,但是后来我为json_acc和json_param添加了递减值,但是它在我还没有读到1:th值之前就崩溃了。我以为是撞车,但直到a_test才知道。

这是一个更大项目的一部分,但我尝试添加一个示例来展示要点。

API侧:

代码语言:javascript
复制
json_t* parObj;

void loadFile(char* path)
{
    json_error_t error;
    parObj = json_load_file(path, 0, &error);
}

int getAccountId(char* id)
{
    json_t* json_acc = json_object_get(parObj, "accounts");
    json_t* json_param = json_object_get(json_acc, id);
    return json_integer_value(json_param);
}

void cleanJson()
{
    json_decref(parObj);
}

呼叫方:

代码语言:javascript
复制
loadFile("/home/jacob/accountDump.json");
int a_id = getAccountId("10");
cleanJson();
int a_test = getAccountId("10");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-20 09:24:05

我确实误解了它应该如何工作,我认为衰老也会将内存设置为零。

API将删除引用并使其成为空闲内存,但只要没有人在那里写入或将其设置为零,并且指针未设置为null,我仍然可以从该指针读取值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50413699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档