【问题标题】:C sprintf function that uses malloc or the stack [duplicate]使用 malloc 或堆栈的 C sprintf 函数
【发布时间】:2011-07-27 14:24:49
【问题描述】:

我听说有一个版本的 sprintf(),可能是一个 GNU/gcc 扩展,它要么分配自己的缓冲区,我必须 free() 或使用堆栈,如 alloca()

任何一种方法都适合我。谁能告诉我我在想什么功能?

【问题讨论】:

    标签: c gcc printf alloca


    【解决方案1】:

    你可能是指asprintf

    来自手册页:


    说明

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


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

    【讨论】:

    • 这个函数是非标准的并不重要,因为它可以实现为vsnprintf(标准C99)或open_memstreamvfprintf(POSIX 2008和C89,分别)。
    猜你喜欢
    • 2015-12-18
    • 2017-04-26
    • 1970-01-01
    • 2018-06-24
    • 2019-11-22
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多