- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
没有相应的 free
的 malloc
是否总是会产生内存泄漏,或者是否存在不会产生内存泄漏的情况?
最佳答案
这取决于你如何定义“内存泄漏”。如果您将其定义为在程序退出时具有分配的存储持续时间的任何未完成对象,那么是的,这是泄漏。这就是 valgrind 等工具的报告。然而,这根本不是一个有用的定义。
我对内存泄漏的定义大致是程序在其生命周期内总内存消耗的无限增加,尽管工作集是有限的。例如,如果我总是在浏览器中打开最多 10 个选项卡,访问相同的 10 个站点,但内存使用量不断增加,那就是内存泄漏。另一方面,分配缓冲区将整个文件加载到内存中,加载文件,反向打印,然后退出而不释放内存的程序不会发生内存泄漏。
一个特别重要的情况,没有 free
的 malloc
不仅不是泄漏,而且是绝对必要的(对于无法对整体做出假设的一般代码)运行时的程序)是运行时分配的常量表的任何使用,其生成由call_once
控制。无论您尝试释放此类表的时间有多晚,代码(在另一个线程或 atexit
处理程序等中)都可能在释放后尝试访问它,并且 call_once
类型接口(interface)故意不提供任何方法来同步除第一次调用之外的任何访问(这就是它们避免在每次读取时引入不需要的获取障碍/同步成本的方法)。
请注意,这里“工作集”的概念有些主观,而且承载力很高。通常,内存泄漏是由于当用户不再考虑其工作集的某些部分时,软件仍然考虑它的问题。
关于c - malloc 没有相应的 free 是否总是会产生内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59014119/
我在 Java 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!