C 与Boehm'一起使用GMP库;垃圾收集器

C 与Boehm'一起使用GMP库;垃圾收集器,c,garbage-collection,malloc,gmp,boehm-gc,C,Garbage Collection,Malloc,Gmp,Boehm Gc,所以 我已经建立了Boehm的GC,希望GMP库能够使用它 这就是我现在正在做的: //=================== //定义 //=================== #包括 #定义MALLOC(x)GC\u MALLOC(x) #定义XALLOC(x)GC_malloc_原子(x) #定义CALLOC(n,x)GC_malloc((n)*(x)) #定义REALLOC(p,x)GC_REALLOC((p),(x)) #定义自由(x)(x)=空 #定义FREENOW(x)GC_fr

所以

我已经建立了Boehm的GC,希望GMP库能够使用它

这就是我现在正在做的:

//===================
//定义
//===================
#包括
#定义MALLOC(x)GC\u MALLOC(x)
#定义XALLOC(x)GC_malloc_原子(x)
#定义CALLOC(n,x)GC_malloc((n)*(x))
#定义REALLOC(p,x)GC_REALLOC((p),(x))
#定义自由(x)(x)=空
#定义FREENOW(x)GC_free(x)
//===================
//助手
//===================
void*分配函数(大小分配大小){
返回MALLOC(alloc_大小);
}
void*重新分配函数(void*ptr、大小\u t旧大小、大小\u t新大小){
返回REALLOC(ptr,新尺寸);
}
void deallocate_函数(void*ptr,size_t size){
免费(ptr);
}
//===================
//主代码
//===================
int main(int argc,字符**argv){
mp_设置_内存_函数和分配_函数,
&重新分配功能,
&取消分配(U函数);
// ...
//代码的其余部分
// ...
}
我做得对吗


有什么需要考虑的吗?

源模块中的
#define
没有任何用途。可以将移动到标头以供使用模块使用。您的
allocate\u函数
和其他函数应位于单独的源文件中。在何处/如何使用
GC\u free
?@PaulOgilvie就是这样,我把它们都放在这里只是为了展示我的代码。发生的事情主要是指针被设置为
NULL
,而不是直接使用
GC\u free