println
宏是否分配堆内存?即调用format
宏以创建要由println
打印的字符串与仅格式化println
宏中的内容之间有什么区别(就内存分配而言)?
答案 0 :(得分:1)
不,print!
,write!
和其他不返回String
的类似宏不需要分配内存。他们调用format_args!
(内置的编译器)来处理参数,并最终使用std::fmt::write
将数据直接写入其目的地,而无需准备临时String
。
请注意,这并不意味着这些宏没有缓冲。在许多情况下,“直接到达其目的地”是指到某个地方的中间缓冲区,而不是立即到文件或stdout。但是此缓冲区可能在堆栈上,不需要在每次调用时重新分配。