free()
释放。
但是,我有一个提供以下功能的库:
char *rsprintf_s(const char *format, ...);
它与“asprintf”执行相同的操作,但直接返回在该函数中动态生成的字符串。例如:
int main()
{
char *my_str = rsprintf_s("A number: %d, a string: %s.", 42, "StackOverflow");
printf("`rsprintf_s` result: '%s'", my_str);
return 0;
}
以上代码的输出结果为:`rsprintf_s` 的结果为:'一个数字:42,一个字符串:“StackOverflow”'。
我猜测该程序存在内存泄漏,这将迫使我执行以下操作:
int main()
{
char *my_str = rsprintf_s("A number: %d, a string: %s.", 42, "StackOverflow");
printf("`rsprintf_s` result: '%s'", my_str);
free(my_str);
return 0;
}
然而,这是一个惯用函数吗?如果存在,那么在这种情况下不释放内存是否被视为小问题?我想知道是否可以使用这样的函数,而无需每次都担心释放内存,尽管我有所怀疑。
free
它)。例如,请参阅strdup
的手册页面。 - user3386109rsprintf_s
定义在哪里? - Fiddling Bits