Expression: null pointer cannot point to a block of non-zero size

visual studio 2022

jsoncpp

GitHub - open-source-parsers/jsoncpp: A C++ library for interacting with JSON.

根据官方github下推荐给visual studio得安装方式 安装jsoncpp

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install jsoncpp

正常情况下,使用jsoncpp没有任何问题

特定情况下,原因未知,我是封装再cef3中使用出现了这个提示:

Debug Assertion Failed!

Program: ...m-113.0.5672.93_windows32\tests\cefclient\Debug\cefclient.exe
File: D:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include\xmemory
Line: 944

Expression: null pointer cannot point to a block of non-zero size

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

google了一大堆,没找到解决方案,后来看了官方的例子

jsoncpp/readFromString.cpp at master · open-source-parsers/jsoncpp · GitHub

换了一种写法解决了,

原来代码,这个是报错代码

  Json::Reader reader;//json解析
  Json::Value value;//表示一个json格式的对象

  std::string aaa = "{\"status\":true}";
 


  if (reader.parse(aaa.c_str(),  value) && !value.empty()) {
      if (!value["status"].asBool()) {
          return 1;
      }
  }
  else {
      return 1;
  }

改进后

  Json::Reader reader;//json解析
  Json::Value value;//表示一个json格式的对象

  std::string aaa = "{\"status\":true}";
  const auto rawJsonLength = static_cast<int>(aaa.length());


  if (reader.parse(aaa.c_str(), aaa.c_str() + rawJsonLength, value) && !value.empty()) {
      if (!value["status"].asBool()) {
          return 1;
      }
  }
  else {
      return 1;
  }

没有报错,可以跑通了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值