具有链表内存转储的结构
有没有标准的方法,我在学校错过了以合理的方式在磁盘上转储嵌套链表的C结构?
我不想做的是:
使用协议缓冲区或任何其他类似的序列化器,
不想创建JSON,XML或其他
我的想法很少:
分配准确的内存量(或扩展现有的内存量)并自行管理,将列表元素放在堆栈中,使用一些额外的字段来管理相对地址。必要时在磁盘上转储块。具有从磁盘映射块的过程创建了理解Byte-order的期望结构。
将主结构推送到文件,然后推送List元素,将有关列表的信息存储在文件的标题中。
为了对此进行成像,我将提供更多详细信息,发布示例代码:
typedef struct{
int b;
List *next;
}List;
typedef struct{
float b;
List2 *next;
}List2;
typedef struct{
List *head;
List *tail;
} info;
typedef struct{
List2 *head;
List2 *tail;
} info2;
struct data
{
int a;
char t[10];
info first;
info second;
info2 third;
};
干杯
P.
编辑:
我扩展了主体结构,看起来像前一个没有充分说明问题。
我知道磁盘上的指针是无用的。
允许的想法和伪代码。
没有找到相关结果
已邀请:
3 个回复
薄响
特别适合这个。一定要取消引用指针,并注意字节序在这里扮演的角色。 这是一些模糊的伪代码:
用于读回实时列表的粗略代码:
Update0 如果您开始嵌套更高级的结构,例如其他链接列表,可变长度字符串等,则需要为每条记录提供类型和长度,以及在其他记录中嵌套记录的方法。 例如,如果您的顶级链接列表的数据成员是另一个列表,则最好将该成员存储为嵌套记录,并包含长度和类型字段。或者,您可以定义标记记录,例如字符串的