c - 序列化 Trie

标签 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 或者我应该构建自己的内存分配器来执行此操作?

最佳答案

分配单个结构数组并按顺序使用它们。如果您不知道所需结构的总大小,则可以重新分配数组。

最终结果是指向各处的连续的 trie 结构数组。

关于c - 序列化 Trie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24960594/

相关文章:

C++ 处理数组

JavaScript 模式和垃圾收集

java - 将 C 或 C++ 常量转换为 Java

c - 循环数组会导致我的程序崩溃

c - 调用编译为 dylib 的 Rust 库的 Swift 程序的性能影响?

c++ - 在 Visual C++ 中分配对齐数据 (memalign)

IOS 内存管理 - 将视频写入临时文件

c - 浅析构函数和深层析构函数?

c - 通过调用不打算返回的函数来退出 switch 语句是良好的编码习惯吗

c - HDF5 C代码生成