Arena::CreateMessage 和 Arena::CreateMaybeMessage 之间的区别

问题描述 投票:0回答:1

当我在 Arena 中使用 Protocol Buffer 时,这两个函数有什么区别

google::protobuf::Arena::CreateMaybeMessage<LPD::MyObj>(); 

还有

google::protobuf::Arena::CreateMessage<LPD::MyObj>();
protocol-buffers protocols protobuf-c
1个回答
0
投票

这已经很晚了,但您问题的答案就在文档中,这里。 Message 的静态“New()”函数使用 null Arena 调用 CreateMaybeMessage 函数。

Message* New(Arena* arena):标准 New() 方法的替代重写。它允许在给定的区域上创建这种类型的新消息对象。如果调用它的具体消息类型是在启用了 arena 分配的情况下生成的,那么它的语义与 Arena::CreateMessage(arena) 相同。如果消息类型不是在启用 arena 分配的情况下生成的,则相当于普通分配,如果 arena 不为 NULL,则后跟 arena->Own(message)。

© www.soinside.com 2019 - 2024. All rights reserved.