C有像Java这样的垃圾收集器吗?

时间:2012-02-07 12:16:37

标签: c list malloc

如果我们在Java中执行类似的操作,C中会发生什么:

    temp.next = temp.next.next;

temp.next节点会发生什么?在Java中有一个转储/垃圾收集器; C中有类似的东西吗?

3 个答案:

答案 0 :(得分:6)

什么都不会发生。它将继续使用内存,你将失去使用它或释放它的任何手段。

在C中你必须明确free当你完成它时通过malloc获得的东西,没有引用计数或垃圾收集这样的东西。

答案 1 :(得分:4)

C没有自动垃圾回收。如果您丢失了对象的跟踪,则会出现所谓的“内存泄漏”。内存仍将作为一个整体分配给程序,但如果你丢失了最后一个指针,则没有任何内容可以使用它。内存资源管理是C程序的关键要求。因此,无论何时在C中动态分配内存,您都需要知道它何时以及如何发布。

有专门帮助您的工具。其中一个值得注意的是valgrind,它使用与商用Purify类似的技术。

答案 2 :(得分:1)

如果你没有free你通过malloc分配的内存{c>,那么在程序执行结束之前它就会无所事事。

与Java不同,C没有垃圾收集。