我创建了一个Trie存储数百万个单词。
typedef struct trie
{
struct trie* c[38];
unsigned int occ;
} trie_t;
occ 只是一个存储单词出现次数的数字。如果为 0:该节点不是单词。 c[38] 代表:26 个字母 + 10 个数字 + '_' + '.'
我想序列化它,这样我就可以将它映射回内存,而不必每次都构建它。 问题是我使用 malloc 创建 Trie,因此所有内存都不连续。
我想强制创建 Trie 的内存是连续的,这样我就可以通过偏移量替换指针并序列化整个结构。
这是正确的方法吗? 是否可以使用 malloc 或者我应该构建自己的内存分配器来执行此操作?
最佳答案
分配单个结构数组并按顺序使用它们。如果您不知道所需结构的总大小,则可以重新分配数组。
最终结果是指向各处的连续的 trie 结构数组。
关于c - 序列化 Trie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24960594/