首页 > 解决方案 > println 宏是否分配堆内存?

问题描述

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

标签: rust

解决方案


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

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


推荐阅读