我是垃圾收集的新手,我已阅读此页: A garbage collector for C and C++,它在页面中提供了一个简单示例:Using the Garbage Collector: A simple example。
#include "gc.h"
#include <assert.h>
#include <stdio.h>
int main()
{
int i;
GC_INIT(); /* Optional on Linux/X86; see below. */
for (i = 0; i < 10000000; ++i)
{
int **p = (int **) GC_MALLOC(sizeof(int *));
int *q = (int *) GC_MALLOC_ATOMIC(sizeof(int));
assert(*p == 0);
*p = (int *) GC_REALLOC(q, 2 * sizeof(int));
if (i % 100000 == 0)
printf("Heap size = %d\n", GC_get_heap_size());
}
return 0;
}
这里,*p
是垃圾收集器管理内存中的指针,它指向托管内存中的内存。
我很好奇垃圾收集器如何知道先前for
循环中分配的两个内存已泄露,应该在下一个for
循环中回收。