我是否需要删除传递给 google protocol buffer (protobuf) 的对象?

2023-12-01

我有简单的消息:

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()不打电话可以吗delete &value;因为我没有创建new指针?
2. 意志记忆smallValue将被自动删除value因为我没有打电话value.release_smallValue();?

// 我是 C++ 和 protobuf 的新手。请告诉我我的代码是否有什么奇怪的地方。

Thanks!


通常最好避免使用set_allocated_* and release_*方法;它们提供了高级内存管理功能,除非您确实想优化某些性能关键型代码,否则您不需要这些功能。

您可以像这样重写代码,以避免过多担心内存管理:

SendMessage message;
message.set_id(0);
Value* value = message.mutable_value();
value->set_val1(1);
value->set_val2(2);
value->mutable_val3()->set_val(3);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我是否需要删除传递给 google protocol buffer (protobuf) 的对象? 的相关文章

  • 如何从更高级别启动用户级别的 Exe

    我希望一个进程始终在用户级别运行 当它由以管理员级别运行的安装程序 自定义 而不是 msi 启动时 或者当用户登录时 环顾四周 我不确定这是否可能 最简单的方法是有 2 个进程 一种是普通用户 它启动提升 管理进程 然后管理进程可以使用 I
  • 在单个 C# 泛型方法中返回可为 null 和 null?

    C 泛型方法是否可以返回对象类型或 Nullable 类型 例如 如果我有一个安全的索引访问器List我想返回一个值 稍后我可以使用以下任一方法检查该值 null or HasValue 目前我有以下两种方法 static T SafeGe
  • C++11 中具有 C 链接的复杂类型

    我需要将 C 库的标头包含到我的 C 11 代码中 现在 标头提供了涉及大量的例程和数据结构double complex到处都是 例如 include
  • 一段简单的代码,在 GC 下运行良好,但在 ARC 中开始崩溃

    我有以下简单的 检查我的应用程序是否设置为在登录时启动 代码 它在垃圾收集下工作得很好 然而 自从我开始使用 ARC 并插入了 bridge 根据需要 代码开始随机且不可预测地崩溃 根据堆栈跟踪 代码在某些期间崩溃CFRelease 有什么
  • 通过 TCP/.NET SSLStream 发送文件很慢/无法正常工作

    我正在编写一个与 SSL 配合使用的服务器 客户端应用程序 通过SSLStream 它必须做很多事情 不仅仅是文件接收 发送 目前 它的工作原理是 只有一个连接 我总是使用从客户端 服务器发送数据SSLStream WriteLine 并使
  • 从 C++ 中的函数返回二维数组[重复]

    这个问题在这里已经有答案了 可能的重复 C 从函数返回多维数组 https stackoverflow com questions 3716595 c returning multidimension array from function
  • 如何正确实现带有 close 方法的处置模式(CA1063)

    框架设计指南 第二版 第 327 页 说 考虑提供方法Close 除了Dispose 如果接近 是该领域的标准术语 这样做时 重要的是使 Close 实现与Dispose并考虑实施IDisposable Dispose方法明确 因此 按照提
  • 获取不带波形符的泛型类名称[重复]

    这个问题在这里已经有答案了 我正在尝试获取类型名称T使用这个 typeof T Name 班级名称是ConfigSettings 而不是返回ConfigSettings它正在返回ConfigSettings 1 有什么具体原因吗 我怎样才能
  • 会员提供商使用还是不使用?

    我正在开发一个使用 Facebook 的网站 现在为了管理用户我想使用MembershipProvider并选择开发一个定制的会员提供商 我的问题是我的数据库架构与标准成员资格架构不匹配 并且提供的用于覆盖的函数采用与我预期不同的参数 例如
  • C# While 循环与 For 循环?

    在 C 中 一个问题已经困扰我一段时间了 它的 While 和 For 循环之间的实际主要区别是什么 它只是纯粹的可读性吗 在 for 循环中本质上可以做的所有事情都可以在 while 循环中完成 只是在不同的地方 举这些例子 int nu
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • C++中的虚方法表存放在哪里?

    我想知道类对象 不是实例 而是类 如何存储在内存中 class A public int a virtual void f virtual A class B public A public int b void f final overr
  • vs2010 c++ 通过debug查看指针内容

    我正在使用 Vs2010 c 处理 2D 数组 我从一维指针开始 并使用操作 如下 class CMatrix void clear public int nRows int nCols short MyMat CMatrix CMatri
  • 使用客户端 hello 消息进行 TLS 协议检测

    我需要检测网络流量中的 https 数据包 到目前为止 我将所有 443 标记为 https 但我不想再在这种情况下使用端口信息 检查客户端问候消息是否足够 Check 22 and version info 0300 0301 or 03
  • XSD、泛型和 C# 类的困境

    我有以下简单的 XSD 文件
  • 如何获取数字列的确切类型,包括。规模和精度?

    有没有办法知道列中列的确切类型DataTable 现在我正在这样做 DataTable st dataReader GetSchemaTable foreach DataColumn col in st Columns var type c
  • Opencv 对象检测:ORB GPU 检测器和 SURF GPU 描述符提取器

    我只是做了一个小实验来尝试不同的检测器 描述符组合 我的代码使用 ORB GPU 检测器来检测特征 并使用 SURF GPU 描述符来计算描述符 我使用 BruteForceMatcher GPU 来匹配描述符 并使用 knnMatch 方
  • QT C++ QRegularExpression 多个匹配

    我想使用正则表达式从 QString html 中提取信息 我明确想使用正则表达式 无解析器解决方案 和类Q正则表达式 http qt project org doc qt 5 0 qtcore qregularexpression htm
  • Node.js 进程内存不足错误

    FATAL ERROR CALL AND RETRY 2 Allocation Failed process out of memory 我看到这个错误 但不太确定它来自哪里 我正在从事的项目有以下基本工作流程 从其他来源接收 XML 帖子
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6

随机推荐

  • 使用 dplyr mutate 根据列名向量创建新列

    我想获取一些列的日志 并创建全部命名为 log 原始列名称 的新列 下面的代码有效 但是我如何传递名为columnstolog变异 谢谢 library dplyr data mtcars columnstolog lt c mpg cyl
  • 适用于 Twitter API 的 Windows Phone SDK

    我想在 WindowsPhone7 上为 Twitter 开发一个示例应用程序 所以有人建议我是否有适用于 Windows Phone 的 SDK 可用 还有 OAuth API 实现的任何代码示例 谢谢 有一些关于构建 Twitter 应
  • 在 C 语言中 strcmp() 到底返回什么?

    我用 C 语言编写了这段代码 include
  • 使用 COALESCE 函数使值以逗号分隔

    我有一张桌子 EMP 我知道使用COALESCE函数我们可以通过这种方式获取任意列的值 23 23 45 34 SELECT OfferID FROM Emp where EmpID 23 但我没有得到实现此目的的语法 任何帮助都会很好地解
  • NPAPI 插件之上的 HTML

    在我使用 FireBreath 和 OpenGL 编写完浏览器插件并使用对象标签嵌入插件后 我尝试在插件之上覆盖各种 HTML 元素 不幸的是 无论我如何尝试 标签和插件图形始终位于页面上任何其他 HTML 元素的顶部 据我所知 flash
  • 使用 awk 在数字和数字之间转换月份

    在过去的考试试卷中 我有一个问题 月份可以用不同的方式表示 例如数字 1 2 12 或三字母月份名称 Jan Feb Dec 建议如何使用 awk 中的关联数组来转换 三个字母的月份名称到月份数字 反之亦然 到 将月份数字翻译为三个字母的月
  • nodejs - mongodb - 如何找到所有a!= b?

    这是征集会 id R65i3SmvucW9imK2cxA6wdFb GXoSHjly7obzFNslklNCBvE0UrW qOiNmiBtPN24 1c session channel all username xuka expires
  • STL 容器分配放置新

    我找不到这个问题的确切答案 因此在这里发帖 当我想到向量时 它需要在连续的内存位置构建对象 这意味着向量保持分配的内存 并且必须对推入其中的对象进行就地构造 放置新的 这是一个有效的假设吗 另外 这是否意味着容器正在手动调用析构函数而不是调
  • 如何使用 lxml 从此 HTML 片段获取文本?

    谁能解释为什么这个片段在断言上失败 from lxml import etree s div h2 img XYZZY h2 div root etree fromstring s elements root xpath contains
  • asp.net core 运行时标签中的 6 个奇怪属性

    我有一个 VS2022 asp net core 6 Web 应用程序 运行时许多 Layout cshtml 标记中的 html 标记属性 b g6ltozs93r 无效 这是一个未受影响的项目的示例 VS2019 net5 或更早版本不
  • 发送短信和彩信

    我正在考虑用我自己的应用程序替换默认的 Android 短信应用程序 但我不完全知道如何发送短信和彩信短信 我想至少得到它 以便我可以先发送短信 因为我认为发送彩信会困难得多 那么 发送这些类型的消息时具体应该怎么做呢 有没有足够容易理解的
  • 我应该在 1.x、2.2 和 0.23 中选择哪个 hadoop 版本

    您好 我是 Hadoop 新手 对版本名称非常困惑 我应该使用 1 x 强大的支持和学习资源 2 2 或 0 23 中的哪一个 我读到 hadoop 正在从 v0 23 完全迁移到 YARN link1 但与此同时 整个网络都在说 hado
  • 为什么HTML标签在elasticsearch中被过滤掉了还是可搜索的

    我是 elasticsearch 的新手 正在测试 html strip 过滤器 理想情况下 我不应该能够搜索 HTML 标签 以下是步骤 Index curl XPOST localhost 9200 foo test analyzer
  • MATLAB 中的绘图函数

    我在 Matlab 中绘制以下函数时遇到问题 x 10 sin pi f 0 1 pi f 0 1 2 我正在使用这段代码 f 50 0 1 50 x 10 sin pi f 0 1 pi f 0 1 2 plot f x 我可以使用在 g
  • 在所选文件中找不到从 DbContext 派生的可构造类型 (EF Power Tools Beta 2 + VS 2012))

    我将 VS 2012 Ultimate 与 Entity Framework Power Tools Beta 2 和实体框架 5 0 使用 nuget 一起使用 我创建了一个 DbContext 类 当我右键单击解决方案资源管理器中的相应
  • 将列转换为行的 SQL 查询

    我有一个如下所示的表格 我的问题是 如何将列转换为行 我正在使用 Microsoft SQL Server sip RECno user1 user2 user3 user4 1 ram ravi sam raj 我需要像下面这样的操作 u
  • 具有任意排序功能的 NSSortDescriptor

    我无法理解如何使用 NSSortDescriptor 进行任意排序 我想做这样的事情 NSArray sortAlgorithm NSArray arrayWithObjects r a nil NSSortDescriptor sortD
  • 具有自定义授权者和 CORS 的 AWS API Gateway 间歇性 200 然后 403 然后 200 ...奇怪

    我有一个带有自定义授权者的 1 Amazon Api Gateway 设置 授权者基本上只返回允许任何内容 我启用了 CORS 这是从jQuery网页 我有两个方法 vehicles 返回汽车列表 bookings 返回预订详细信息 我看到
  • 结果集中重复检索返回null

    我有一个问题ResultSet getString当我第一次调用它时 它返回值 但第二次返回 null 这不会关闭结果集或 sql 连接 if rs getString i null properties setProperty metaD
  • 我是否需要删除传递给 google protocol buffer (protobuf) 的对象?

    我有简单的消息 message SmallValue int32 val 1 message Value int32 val1 1 int32 val2 2 SmallValue val3 3 message SendMessage int