【问题标题】:What does it mean to recycle the dynamic memory?回收动态内存是什么意思?
【发布时间】:2018-04-30 20:37:03
【问题描述】:

我了解了在 malloc 之后使用的“free”,它不会在 C 中制造垃圾内存。什么是回收?我查找它,但找不到任何代码。我得到的只是关于免费的解释。它们是一样的吗?

补充一点,在我关于数据结构(一般线性列表)的书中说“回收是一个伪代码命令,用于将节点的空间返回到动态内存。

非常感谢。

如果许可证有任何问题,我将丢弃图片。

【问题讨论】:

  • 我认为“伪代码命令”“回收”是你书中用来总结free的效果是什么的伪代码。你能引用一下“回收”的使用背景吗?
  • 对“回收”的一种解释是,在调用free 之后,相同的内存可能会在将来调用malloc 时再次出现。
  • @Yunnosch 我现在没有键盘,所以添加了一个图表。请看一下

标签: c data-structures dynamic-memory-allocation recycle


【解决方案1】:

我看过你在谷歌书籍中提到的短语。他们的意思是他们假设他们已经定义了一个函数或伪代码,void recycle(node *ploc),其中 ploc 是我们在链表中不再需要的节点。是的,它类似于在 ploc 上执行 free 或 delete。我们可以直接在当前函数中执行,也可以在单独的函数中执行,例如回收。

【讨论】:

    【解决方案2】:

    回收意味着释放未使用的内存以便以后使用。

    如果您在没有free-ing 的情况下继续使用malloc-ing,则在运行一段时间后,您的程序可能会占用 GBs 的 RAM,而且大部分是未使用的。直接后果可能是操作系统拒绝了你程序进一步的malloc请求,甚至给整个系统带来负担。

    回收不是代码。这是真实代码告诉操作系统“这块内存不再使用。你可以将它分配给任何程序。”之后系统可以管理这个特定的内存块再次记忆而不是浪费它。真正的代码是free(),而回收只是计算机科学中使用的一个术语。

    就效率而言,free 未使用的内存始终是一个好习惯。

    【讨论】:

      猜你喜欢
      • 2021-07-03
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多