【发布时间】:2017-12-13 12:46:32
【问题描述】:
user:surendra nath 对此post 的回答指出,OP 发布的代码存在内存泄漏,而大多数情况下,当我们未能释放动态分配的内存时,就会发生泄漏区域,但我在 OPs 代码中看不到任何动态分配。
他引用了这个 wiki 定义,here。
从user:artificial idiot 到post 的内存泄漏的另一个定义是:
微妙的定义:无法释放可达内存 您的程序需要更长的时间才能正常运行。这差不多 无法使用自动化工具或程序员检测到 不熟悉代码。虽然从技术上讲它不是泄漏,但它有 与幼稚的含义相同。这不仅仅是我自己的想法。 您可能会遇到写在垃圾收集器中的项目 语言,但仍然提到在其更改日志中修复内存泄漏。
所以,我的问题:
- 考虑到“人工白痴”或维基百科给出的内存泄漏定义,“surendra nath”在 OPs 代码上所说的点是否可以说是内存泄漏?如果是,那为什么?
- C 中的内存泄漏是否总是指未能释放先前动态分配的内存?
附: - 我不知道 wiki 和 "artificial idiot" 的定义是否具有相同的含义,因为 wiki 的定义有时过于宽泛而无法理解。
【问题讨论】:
-
您所指的答案目前得分为-1。您可能会认为有用的证据;)
-
是的。我从来没有遇到过任何说内存泄漏只是由于 free() 东西失败的消息来源。而且,如果我引用的定义证实了他的回答,那将是有趣且信息丰富的信息。
-
我认为它不应该被否决。考虑到“人造白痴”的定义,至少有人可以解释为什么代码没有内存泄漏。如果我是 C 语言的大师,我永远不会问它。但我只是一个新手。
-
引用已释放的内存是一个错误,C 规范说这是未定义的行为。但这与内存泄漏是不同的错误。
-
@Barmar 能否提供一个特定 C 规范的参考链接?
标签: c memory-management memory-leaks