Open OnlySoaring opened 2 months ago
Use Json:: Value root
or Json:: Value * root=new Json:: Value ();
Also unable to release
I tried this code. However, the code shows a memory leak when you are not handling the signal. If you handle the SIGINT signal try to break the loop using CTRL + C. There is no memory leak. Here is my code. please try this.
#include "jsoncpp/json/json.h"
#include <iostream>
#include <fstream>
#include <signal.h>
bool is_true = true;
void sigint(int signum)
{
is_true = false;
}
int main(int argc, char** argv)
{
signal(SIGINT,sigint);
while(true)
{
Json::Value root;
std::ifstream ifs("/opt/user.json");
Json::Reader reader;
reader.parse(ifs, root);
ifs.close();
`std::cout<<"1"<<std::endl;`
`break;`
}
while(is_true)
{
std::cout<<2<<std::endl;
}
return 0;
}
Describe the bug When I use Json:: Reader or Json:: parseFromStream to create Json:: Value, the memory of Json:: Value is not released when the function ends
To Reproduce
Expected behavior My JSON file has 681MB. When the test program printed 1, the program occupied 2.12GB of memory. At the end of "while", Json:: value should be released, but when the test program prints 2, the memory does not decrease. Whether I use Json:: Reader or Json:: parseFromStream, it's the same. This is fatal for multi program projects as it occupies useless memory.
Desktop (please complete the following information):