python2.3 ctypes1.0.2 总是出core,double free

我正在使用ctypes1.0.2,python是2.3,使用ctype调用一个c函数,这个函数大概如下:

int test(struct a ** ap){
struct a *app = malloc(...)
app->x = malloc(xx)

*ap = app
}

int free(struct a**ap){
free(*ap->x)
free(*ap)
}

也就是说在这个函数中分配了内存,我在调用时,首先传入一个pointer,如果我调用test后马上调用free则会double free,如果我不调用,那么在我的程序退出时会segmentation fault,应该内存的问题,但我不知道具体是什么问题,以及该怎样解决,谢谢