如果我们在Java中执行类似的操作,C中会发生什么:
temp.next = temp.next.next;
temp.next节点会发生什么?在Java中有一个转储/垃圾收集器; C中有类似的东西吗?
答案 0 :(得分:6)
什么都不会发生。它将继续使用内存,你将失去使用它或释放它的任何手段。
在C中你必须明确free
当你完成它时通过malloc
获得的东西,没有引用计数或垃圾收集这样的东西。
答案 1 :(得分:4)
C没有自动垃圾回收。如果您丢失了对象的跟踪,则会出现所谓的“内存泄漏”。内存仍将作为一个整体分配给程序,但如果你丢失了最后一个指针,则没有任何内容可以使用它。内存资源管理是C程序的关键要求。因此,无论何时在C中动态分配内存,您都需要知道它何时以及如何发布。
答案 2 :(得分:1)
如果你没有free
你通过malloc
分配的内存{c>,那么在程序执行结束之前它就会无所事事。
与Java不同,C没有垃圾收集。