我正在使用rapidjson C++ library,使用这个库你可以创建一个 JSON 对象。目前我有一些记忆问题。
情况:
在我当前的设置中,我创建了一个新对象,并为其添加了值成员和数组成员。该对象通过引用传递给多个函数并在我的程序流程中使用。
rapidjson::Value data;
data.SetObject();
while(...)
{
// --------------------------
// Add coordinates to object
JSON::AllocatorType& allocator = data.GetAllocator();
JSONValue region;
region.SetArray();
region.PushBack(rectangle.m_x1, allocator);
region.PushBack(rectangle.m_y1, allocator);
region.PushBack(rectangle.m_x2, allocator);
region.PushBack(rectangle.m_y2, allocator);
data.AddMember("regionCoordinates", region, allocator);
// --------------------------
// Add number of changes
data.AddMember("numberOfChanges", numberOfChanges, allocator);
... call function and pass data
... call function2 and pass data
if(data.MemberBegin() != data.MemberEnd())
{
data.EraseMember(data.MemberBegin(), data.MemberEnd());
}
}
我在循环中使用相同的对象,因此在我再次添加成员之前擦除了对象的成员。我为此使用了 EraseMember 函数。但是我注意到这个函数没有释放数组成员的内存,因此会泄漏内存。
如何让 rapidjson 释放包含所有成员的完整对象?