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