println宏是否分配堆内存?

时间:2019-08-01 18:10:31

标签: rust

println宏是否分配堆内存?即调用format宏以创建要由println打印的字符串与仅格式化println宏中的内容之间有什么区别(就内存分配而言)?

1 个答案:

答案 0 :(得分:1)

不,print!write!和其他不返回String的类似宏不需要分配内存。他们调用format_args!(内置的编译器)来处理参数,并最终使用std::fmt::write将数据直接写入其目的地,而无需准备临时String

请注意,这并不意味着这些宏没有缓冲。在许多情况下,“直接到达其目的地”是指到某个地方的中间缓冲区,而不是立即到文件或stdout。但是此缓冲区可能在堆栈上,不需要在每次调用时重新分配。