我在main.cpp中有以下结构
typedef struct s1
{
uint8 plmn[3];
}tai_s;
typedef struct s2
{
tai_s tai;
}tailist_s;
std::vector<tailist_s> tallist;我在main.proto中有折叠结构
message tai_s
{
google.protobuf.BytesValue plmn[3];
}
message tailist_s
{
tai_s tai;
}
repeated tailist_s tallist;我试图像下面这样对原型进行编码,
for(int i1=0; i1<tailist.size(); i1++)
{
const tailist_s *tailistproto = proto->add_tailist();
tailistproto->mutable_tai()->mutable_plmn()->set_value(tailist.tai.plmn, 3);
}我试图像下面这样解码原型机,
for(int i1=0; i1<proto->tailist_size(); i1++)
{
mempy(tailist.tai.plmn, proto->tailist(i1).tai().plmn().value(), 3);
}但它在记忆过程中会产生分割错误。请告诉我我做错了什么。
发布于 2022-05-18 09:33:45
for(int i1=0; i1<proto->tailist_size(); i1++)
{
mempy(tailist.tai.plmn, proto->tailist(i1).tai().plmn().value(), 3);
}你在试图解码一个向量。那个向量在哪里?你在哪里创建你想要写的裁缝?您不会在每次迭代中将尾列表添加到向量并覆盖它。
应该是这样的:
std::vector<tailist_s> tallist(proto->tailist_size());
for(int i1=0; i1<proto->tailist_size(); i1++)
{
mempy(&tallist[i1].tai.plmn, proto->tailist(i1).tai().plmn().value(), 3);
}https://stackoverflow.com/questions/72284547
复制相似问题