如何在C中创建具有两个可变大小数组的结构

Art*_*ldt 1 c arrays struct

我正在编写一个轻量级序列化函数,需要在其中包含两个可变大小的数组.

  • 我该如何追踪每个的大小?
  • 我该如何定义结构?
  • 我错了吗?

编辑:结果必须是连续的内存块

Chr*_*her 8

这解决了类似的问题

typedef struct
{
   size_t arr_size_1, arr_size_2;
   char arr_1[0/*arr_size_1 + arr_size_2*/];
} ...;
Run Code Online (Sandbox Code Playgroud)

大小应位于动态大小数据的前面,以便在扩展数组时不会移动.

您的结构中不能有2个未知大小的数组,因此必须将它们折叠为一个,然后从第一个指针访问相对数据.