为了争论,让我们讨论这个代码片段:
void GetConfig(void) {
String RawData;
String s = SendAPI("config");
TJSONObject *config = new TJSONObject();
config->Parse(s.BytesOf(),0);
TJSONPair *pair = new TJSONPair("",config);
RawData = JSONToFormatted(pair,0);
delete pair;
delete config;
}
当我从函数返回时,我在尝试运行 TJSONObject 析构函数的 VCL 库中遇到访问冲突。
如果我删除删除配置语句,它运行良好。我怀疑 TJSONPair 正在获取 TJSONObject 的所有权并在 delete pair 语句中释放它。因此配置实例无效。
在另一个地方,我在创建 TJSONPair 实例之前克隆了 TJSONObject 实例,这使我能够继续访问并释放原始 TJSONObject 实例。因此支持 TJSONPair 声称拥有所有权的假设。
有人可以确认这一点,或者如果我排除删除配置语句,我会得到巨大的内存泄漏吗?