我有简单的消息:
message SmallValue {
int32 val = 1;
}
message Value {
int32 val1 = 1;
int32 val2 = 2;
SmallValue val3 = 3;
}
message SendMessage {
int32 id = 1;
oneof message {
Value value= 2;
}
我的代码片段:
// create new pointer for smallValue
SmallValue* smallValue = new SmallValue();
smallValue->set_val3(3);
// create new object value and set_allocated_val3
Value value;
value.set_val1(1);
value.set_val2(2);
value.set_allocated_val3(smallValue);
// create new object message and set_allocated_value
SendMessage message;
message.set_id(0);
message.set_allocated_value(&value);
// after some work, release value from message
message.release_value();
我的问题是:
1. 调用
message.release_value()
后,如果我没有创建 new
指针,那么不调用 delete &value;
是否可以?2. 如果我没有调用
value.release_smallValue();
,那么 smallValue
的内存会随着 value
自动释放吗?
// 我对 C++ 和 protobuf 都是新手。如果我的代码有什么奇怪的地方,请告诉我。
谢谢!
new
分配的指针。value
没有通过new
分配;它在堆栈上分配。另一方面,你几乎永远不需要显式地输入new
或delete
;你应该使用std::unique_ptr
和std::make_unique
。 - Justinstd::unique_ptr
和std::make_unique
。我会去了解一下。 - Thanh Nhan