C++ 删除由重复字段分配的内存

C++ 删除由重复字段分配的内存,c++,protocol-buffers,C++,Protocol Buffers,目前,我的proto文件中有类似的内容: message MsgA { required string symbol = 1 ; optional int32 freq = 2 [default = 0]; } message MsgB { repeated MsgA val = 1 ; } 现在我知道为了使用MsgB中的重复字段。我需要这样做: MsgB inst; MsgA some_val = Get_MsgA_Result(); MsgA* res = inst.add_va

目前,我的proto文件中有类似的内容:

message MsgA
{
required string symbol = 1 ;
optional int32  freq = 2   [default = 0]; 
}

message MsgB
{
repeated MsgA val = 1 ;
}
现在我知道为了使用MsgB中的重复字段。我需要这样做:

MsgB inst;
MsgA some_val = Get_MsgA_Result();
MsgA* res = inst.add_val();
*res = some_val;

现在我的问题是,一旦我们完成了MsgB,我们如何回收inst.add_val;分配的内存

据我所知,消息对象管理自己的内存,因此您无需执行任何操作。这是否意味着,一旦上述示例中的inst超出范围,它还会删除它分配给被调用的add_val的堆实例?是的。对于快速和肮脏的测试,您可以通过Valgrind运行此测试并确认。您也可以检入源代码,但我相当确定这是它可能有意义的唯一方法。