如何解决JSONCPP:使用指针如文档中所述代替引用导致分段错误
在 JSONCPP 库的文档 ( here ) 中,它说函数 Json::parseFromStream()
接受 Json::Value *
作为其参数之一。但是,它会导致分段错误,如下面的代码片段所示:
void Coco::read_gt(const std::string filename){
if (!file_exists(&filename)){
throw std::invalid_argument("The file " + filename + " ws not found." );
}
Json::CharReaderBuilder builder{};
builder["collectComments"] = false;
Json::Value * value = nullptr;
std::string errs{};
std::ifstream fid(filename);
LOG(INFO) << "HERE";
bool ok = Json::parseFromStream(builder,fid,value,&errs);
std::cout << ok << std::endl;
value->removeMember("licenses");
gt = value;
return;
}
有趣的是,当我根据文档使用参考时,我没有遇到以下代码段中的分段错误
void Coco::read_gt(const std::string filename){
if (!file_exists(&filename)){
throw std::invalid_argument("The file " + filename + " ws not found." );
}
Json::CharReaderBuilder builder{};
builder["collectComments"] = false;
Json::Value value;
std::string errs{};
std::ifstream fid(filename);
LOG(INFO) << "HERE";
bool ok = Json::parseFromStream(builder,&value,&errs);
std::cout << ok << std::endl;
value->removeMember("licenses");
gt = value;
return;
}
这种行为的可能原因是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。