序列化Trie

时间:2014-07-25 16:46:14

标签: c memory-management

我创建了一个Trie来存储数百万字。

typedef struct trie
{
    struct trie* c[38];
    unsigned int occ;
} trie_t;

occ只是一个存储单词出现次数的数字。如果为0:节点不是一个单词。 c [38]适用于:26个字母+10个数字+' _' +'。'

我想序列化它,所以我可以将它重新映射回内存,而不必每次都构建它。 问题是我使用malloc来创建Trie所以所有的记忆都不是重要的。

我想强制创建Trie的内存是连续的,所以我可以通过偏移替换指针并序列化整个结构。

这是正确的方法吗? 甚至可以使用malloc,还是应该构建自己的内存分配器来执行此操作?

1 个答案:

答案 0 :(得分:2)

分配单个结构数组并按顺序使用它们。如果你不知道你需要的结构总大小,那么你重新分配数组。

最终的结果是一系列连续的特里结构。