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

Zee*_*aan -4 c malloc list

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

    temp.next = temp.next.next;
Run Code Online (Sandbox Code Playgroud)

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

cni*_*tar 6

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

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


Jon*_*ler 5

C 没有自动垃圾收集。如果您失去了对对象的跟踪,就会发生所谓的“内存泄漏”。内存仍会作为一个整体分配给程序,但如果您丢失了指向它的最后一个指针,则任何东西都无法使用它。内存资源管理是 C 程序的关键要求。因此,每当您在 C 中动态分配内存时,您都需要知道它何时以及如何被释放。

有专门为您提供帮助的工具。一个值得注意的是valgrind,它使用与市售的Purify类似的技术。