假如有一个结构体有 n 个成员(忽略命名蛤):
struct Data
{
char *str1;
char *str2;
int tmp1;
...
};
存储这个结构体到一个 buffer 中:
| str1 的长度 | str1 的内容 | str2 的长度 | str2 的内容 | tmp1 的内容|...
读取的时候就可以跳到相应的 offset 处读取结构体第 n 个成员的值( str1 是第 1 个成员, str2 是第 2 个成员...)
求教一下,是否可以实现此情况下对 str1 等变长数据的修改(不移动 str1 后面的数据,效率低),修改后不影响通过 n 取到成员的值。
ps : 我也想过定长数据放到一个 buffer 中,变长数据放到另一个 char**中,每个变长数据单独分配空间。但在别人程序调试查看内存,可以看到只用一个 buffer 就实现了上述功能,而且变长数据没有序列化成定长数据。