垃圾收集器和双重分配的内存

时间:2012-03-24 12:32:05

标签: c pointers garbage-collection

我的问题是,如果分配的变量再次被malloced而不释放内存,垃圾收集器将释放内存。

例如:

ptr1 = malloc(100)
ptr1 = malloc(200)

在这种情况下,第一个分配的内存是否会被垃圾收集器解除分配? 如果是,那么当...... ???

3 个答案:

答案 0 :(得分:5)

不,它会导致内存泄漏。

C中没有垃圾收集器。
你必须自己做内存管理。

ptr1 = malloc(100);
free(ptr1);
ptr1 = malloc(200);
...
...
free(ptr1);

答案 1 :(得分:1)

C中没有垃圾收集器。

答案 2 :(得分:1)

C 没有垃圾收集器;您显示的代码将导致内存泄漏。

您有责任使用free()解除内存:

ptr1 = malloc(100);
free(ptr1);
ptr1 = malloc(200);