C asprintf();导致内存问题

C asprintf();导致内存问题,c,memory,C,Memory,我正在使用asprintf(&somestring,“%s%s”,stringone,stringtwo)连接字符串。如果我调用它一次,然后free(somestring)调用一次,效果很好。但是,如果在递归函数中多次调用asprintf(),但仅调用free(somestring)一次,就会遇到问题。是否需要为每个asprintf()调用free() 是否需要为每个asprintf()调用free() 对。根据its: 函数asprintf()和vasprintf()类似于sprintf(3)

我正在使用
asprintf(&somestring,“%s%s”,stringone,stringtwo)
连接字符串。如果我调用它一次,然后
free(somestring)
调用一次,效果很好。但是,如果在递归函数中多次调用
asprintf()
,但仅调用
free(somestring)
一次,就会遇到问题。是否需要为每个
asprintf()
调用
free()

是否需要为每个
asprintf()
调用
free()

对。根据its:

函数
asprintf()
vasprintf()
类似于
sprintf(3)
vsprintf(3)
,只是它们分配了一个足够大的字符串来保存输出,包括终止的空字节,并通过第一个参数返回指向它的指针此指针应传递到空闲(3),以便在不再需要时释放分配的存储。


但是在递归函数中,如何多次释放字符串?如果将
asprintf()
的结果传递给另一个要使用的函数,则在该函数完成时释放指针。递归调用没有什么不同。