我使用asprintf(&somestring,"%s%s",stringone,stringtwo)
连接字符串。如果我叫它一次然后free(somestring)
一次就可以了。但是,如果在递归函数中多次调用asprintf()
但只调用free(somestring)
一次,则会遇到问题。是否需要为每个free()
调用asprintf()
?
最佳答案
是否需要为每个free()
调用asprintf()
?
对。根据itsdocumentation:
函数asprintf()
和vasprintf()
类似于sprintf(3)
和vsprintf(3)
,只是它们分配了一个足够大的字符串来保存包含终止空字节的输出,并通过第一个参数返回指向它的指针。此指针应传递给free(3),以便在不再需要时释放已分配的存储。