我正在为 C++ 使用nlohmann::json库。我有以下代码。
#include <iostream>
#include <json.hpp>
using json = nlohmann::json;
int main(){
json m;
m["aaaaaaaa"] = 0;
m["bbbbbbbbbbbbb"] = 0;
m["ccccccccccccccccccc"] = 0;
m["dddddddddddddddddd"] = 0;
m["eeeeeeeeeeeeeeeeee"] = 0;
m["fffffffffffff"] = 0;
m["gggggggggggg"] = 0;
m["hhhhhhhhhhhh"] = 0;
m["iiii"] = 0;
m["jjjjjjjjjjjjjjj"] = 0;
m["kkkkkkkkkkkkkk"] = 0;
m["llllllllllllllll"] = 0;
for (int i = 0; i < 100; i++) {
const char* mstr = m.dump().c_str();
std::cout << strlen(mstr) << std::endl;
}
}
我希望strlen(mstr)
for 循环的所有 100 次迭代的输出完全相同。
在某些运行中,我得到了预期的输出。
223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 253 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 253程序以退出代码结束:0
但在其他运行中,我偶尔会看到字符串的长度为 0。
223 0 223 223 223 223 223 223 223 223 223 0 223 223 223 223 223 0 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 0 223 223 223 223 223 223 223 223 0 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 223 253程序以退出代码结束:0
这怎么可能发生?