【发布时间】:2021-01-24 20:49:31
【问题描述】:
我知道 C 不提供自动垃圾回收,这意味着每当有人使用 malloc、realloc 或 calloc 分配内存时,他们必须在程序结束时释放它们,因此不会有泄漏。但是,我还没有看到任何人释放在变量声明期间分配的内存。例如,如果我执行int x = 10; 之类的操作,则在某处分配了一个用于保存值 10 的内存(我什至可以通过执行&x 来查看地址),但我从未在我的程序中释放这些内存,但似乎没有内存泄漏(如果我使用 valgrind 来检查),这让我认为 C 有某种垃圾收集,或者这是一个不同的故事?
【问题讨论】:
-
它在EXE中预先分配,然后在程序卸载时释放。有很多指南展示了 C 的内存如何用于变量 - 例如静态、本地和动态分配的变量。你看过吗?
-
我不知道要寻找什么,谢谢,我会知道寻找静态变量之类的东西。或者我问的问题是否有合适的话题。
-
除非你在一个没有内存保护的深度嵌入式系统上,所有由
malloc和朋友分配的存储空间作为进程终止的副作用自动释放,并且用手撕下来只是浪费时间。
标签: c memory-management memory-leaks