使用 malloc 或堆栈的 C sprintf 函数

标签 c gcc printf alloca

<分区>

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

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

最佳答案

你可能是说 asprintf

来自手册页:


描述

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


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

关于使用 malloc 或堆栈的 C sprintf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512212/

相关文章:

c - 调整堆函数导致索引范围断言失败

c++ - 列出 PE 文件中的所有 LoadLibrary 和 GetProcAddress 调用

无法编译C库

c++ - std::vector 和 std::string 重新分配策略

linux - GCC 本地安装 Ubuntu

c - 打印部分字符数组......有一个扭曲

printf - 为什么 Printf 中不推荐使用 %b?

c - gcc 警告 : braces around scalar initializer

c - 裸机 ARM Raspberry Pi + qemu 具有浮点除法的奇怪行为

c - 需要显示值为 0 的灯的索引号