typedef struct trie
{
struct trie* c[38];
unsigned int occ;
} trie_t;
occ只是一个数字,用于存储单词的出现次数。如果0:节点不是一个单词。 c [38]用于:26个字母+10个数字+'_'+'。'
我想序列化它,以便我可以将它映射回内存,而无需每次都构建它。 问题是我用malloc来创建Trie,所以所有的内存都不是连续的。
我想强制Trie创建的内存是连续的,所以我可以用offset来替换指针并序列化整个结构。
这是正确的路吗? 它甚至可能与malloc或我应该建立自己的内存分配器来做到这一点?
那么这个静态一旦建立 - 你不更新它? –
是的。没有更新。 Trie是从不会改变的单词列表创建的。 – IggY
然后只是建立它。理解你可能会“弯曲”一些C规则,并且不得不依靠可怕的“无证行为”来进行寻址,但没有什么大不了的。 –