使用malloc或堆栈的C sprintf函数

时间:2011-04-01 10:38:12

标签: c gcc printf alloca

我听说有sprintf()的版本,可能是GNU / gcc扩展,它可以分配自己的缓冲区,我必须free()或者使用像alloca()这样的堆栈。

这两种方法都适合我。谁能告诉我我在考虑什么功能?

1 个答案:

答案 0 :(得分:5)

你可能意味着asprintf

从手册页:


<强>描述

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


请注意,asprintf是一个GNU扩展,也可以在各种BSD实现中找到,但它不在标准C或POSIX中。