我创建了一个Trie来存储数百万字。
typedef struct trie
{
struct trie* c[38];
unsigned int occ;
} trie_t;
occ只是一个存储单词出现次数的数字。如果为0:节点不是一个单词。 c [38]适用于:26个字母+10个数字+' _' +'。'
我想序列化它,所以我可以将它重新映射回内存,而不必每次都构建它。 问题是我使用malloc来创建Trie所以所有的记忆都不是重要的。
我想强制创建Trie的内存是连续的,所以我可以通过偏移替换指针并序列化整个结构。
这是正确的方法吗? 甚至可以使用malloc,还是应该构建自己的内存分配器来执行此操作?
答案 0 :(得分:2)
分配单个结构数组并按顺序使用它们。如果你不知道你需要的结构总大小,那么你重新分配数组。
最终的结果是一系列连续的特里结构。