我正在编写一个库,将一些结构化的二进制数据解析成一组对象。这些对象预计会比任何用户代码更长寿,并且通常会在主函数结束或之后释放。
我使用共享(和弱)指针来管理每个对象的内存,但这会给程序带来很多额外的复杂性,并引发一些结构问题,在这个问题中不会进一步讨论。
考虑到:
- 遍历整个二进制数据是昂贵的,我不能承受多次遍历。 - 每个访问的条目用于构建一个对象,然后将其注册(即添加到集合中)。 - 二进制数据中的条目可能依赖于稍后出现但立即解析并在再次访问时注册的其他条目。 - 重复的条目可能随时出现,但我需要将这些重复项合并为一个实例(并更新任何指向这些重复项的指针以引用新合并的条目)后进行注册。 - 所有这些对象都保证是派生自一个公共类的许多POD类型之一,因此除了内存之外,不需要清理任何内容。 - 结果程序将在现代操作系统上运行(或在这种情况下,从死亡进程中收集内存)。
我非常想只使用原始指针,永远不释放这些对象占用的内存,并让操作系统在进程退出后进行清理。最好的做法是什么?
我使用共享(和弱)指针来管理每个对象的内存,但这会给程序带来很多额外的复杂性,并引发一些结构问题,在这个问题中不会进一步讨论。
考虑到:
- 遍历整个二进制数据是昂贵的,我不能承受多次遍历。 - 每个访问的条目用于构建一个对象,然后将其注册(即添加到集合中)。 - 二进制数据中的条目可能依赖于稍后出现但立即解析并在再次访问时注册的其他条目。 - 重复的条目可能随时出现,但我需要将这些重复项合并为一个实例(并更新任何指向这些重复项的指针以引用新合并的条目)后进行注册。 - 所有这些对象都保证是派生自一个公共类的许多POD类型之一,因此除了内存之外,不需要清理任何内容。 - 结果程序将在现代操作系统上运行(或在这种情况下,从死亡进程中收集内存)。
我非常想只使用原始指针,永远不释放这些对象占用的内存,并让操作系统在进程退出后进行清理。最好的做法是什么?