gpt4 book ai didi

c++ - 我应该释放通常在程序结束时释放的长期内存吗?

转载 作者:太空狗 更新时间:2023-10-29 19:45:37 27 4
gpt4 key购买 nike

我目前正在编写一个将一些结构化二进制数据解析为一组对象的库。这些对象预计比任何用户代码都长,并且通常会在结束时或在 main 函数之后被释放。

我正在使用共享(和弱)指针来管理每个对象的内存,但它给程序带来了很多额外的复杂性,并引发了我不会在这个特定问题中讨论的结构性问题。

考虑到:

  • 遍历整个二进制数据非常昂贵,而且我不能重复遍历一次,
  • 每个访问过的条目都用于构建一个对象,然后该对象会被注册(即添加到集合中),
  • 二进制数据中的条目可能依赖于稍后出现但立即被解析的其他条目,并在再次访问该条目时注册,
  • 重复条目可能随时出现,但我需要在注册前将这些重复项合并到一个实例中(并将引用这些重复项的任何指针更新为新的合并条目),
  • 这些对象中的每一个都保证是派生一个公共(public)类的许多 POD 类型之一,因此除了内存之外什么都不需要清理,
  • 生成的程序将在现代操作系统上运行(或者在本例中,从死进程中收集内存),

我很想只使用原始指针,从不释放那些对象占用的内存,让操作系统在进程退出后进行清理。

什么是最好的行动方案?

最佳答案

如果您正在编写可重用代码,您至少需要提供清理选项。如果某些程序使用您的库进行一次操作,然后继续运行怎么办?假设流程在您的图书馆任务完成后立即退出是不安全的。

关于c++ - 我应该释放通常在程序结束时释放的长期内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com