rapidjson使用问题小计

探讨了在使用RapidJSON库时,尝试对同一个`rapidjson::Writer`实例多次调用`Accept`方法导致程序崩溃的问题。通过分析错误日志,指出了问题可能的原因在于多次初始化对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rapidjson::StringBuffer buffer;

rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);

 

rapidjson::Document bid_response;
bid_response.SetObject();

......

 

对多个json value或document 多次使用 bid_response.Accept(writer) ,writer值声明定义了一个会导致程序core:

#0  0x00007f05a0412625 in raise () from /lib64/libc.so.6
#1  0x00007f05a0413e05 in abort () from /lib64/libc.so.6
#2  0x00007f05a040b74e in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f05a040b810 in __assert_fail () from /lib64/libc.so.6
#4  0x0000000001352821 in rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::Prefix (
    this=0x7f0558028380, type=rapidjson::kObjectType) at netgo/thirdparty/rapidjson-1.0.2/include/rapidjson/writer.h:332
#5  0x000000000134e472 in rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::StartObject (
    this=0x7f0558028380) at netgo/thirdparty/rapidjson-1.0.2/include/rapidjson/writer.h:135
#6  0x000000000134b09b in rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::Accept<rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator> > (this=0x7f05580287f0, handler=...) at netgo/thirdparty/rapidjson-1.0.2/include/rapidjson/document.h:1491

 

rapidjson::Writer<rapidjson::StringBuffer> 不可多次accept? 原因待究。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值