You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++17中使用Protobuf序列化时出现段错误问题求助

C++17中使用Protobuf序列化时出现段错误问题求助

各位好!我最近在C++17环境里尝试用Protobuf做通讯录信息的序列化,结果程序一跑就触发段错误,卡了好半天都没找到问题出在哪,特意来这儿求助!

先给大家贴一下我写的proto定义文件:

syntax = "proto3";  
package PhoneBookSerialize;  

message Date {  
  int32 year = 1;  
  int32 month = 2;  
  int32 day = 3;  
}  

message Contact {  
  string name = 1;  
  Date birthday = 2;  
  repeated string phone_number = 3;  
}  

message ContactList{  
  repeated Contact contact = 1;  
}  

然后我在业务代码里定义了一个Contact结构体,本来是想把这个结构体的数据转成Protobuf生成的消息对象再做序列化,结果刚写了结构体的开头部分,测试转换和序列化操作时就直接崩了:

struct Contact {  
  std::string name;
  // 生日和电话号码的字段还没写完,结果连处理name字段的转换都触发了段错误

我现在实在摸不着头脑,想问问大家:

  • 是不是自定义结构体和Protobuf消息类的转换逻辑里有什么容易踩的内存坑?
  • 序列化的流程我是不是漏了什么关键步骤?比如Protobuf的对象有没有正确初始化?
  • 段错误一般是内存访问问题,会不会是我对repeated类型的处理思路从一开始就错了?

麻烦各位帮忙分析分析,谢谢啦!

备注:内容来源于stack exchange,提问作者Daniil Yefimov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:58:18