我使用asprintf(&somestring,"%s%s",stringone,stringtwo)连接字符串。如果我叫它一次然后free(somestring)一次就可以了。但是,如果在递归函数中多次调用asprintf()但只调用free(somestring)一次,则会遇到问题。是否需要为每个free()调用asprintf()

最佳答案

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

10-02 06:34