rust - println 宏是否分配堆内存?
问题描述
宏是否println
分配堆内存?format
即调用宏以创建要打印的字符串println
和仅格式化宏中的内容之间有什么区别(在内存分配方面)println
?
解决方案
不,,print!
和write!
其他不返回 a 的类似宏String
不需要分配内存;他们调用format_args!
(这是一个内置的编译器)来处理参数并最终用于std::fmt::write
将数据直接写入其目的地,而无需准备临时String
.
请注意,这并不意味着这些宏是无缓冲的;在许多情况下,“直接到它的目的地”意味着到某个地方的中间缓冲区,而不是立即到文件或标准输出。但是这个缓冲区可能在堆栈上,不需要在每次调用时重新分配。
推荐阅读
- javascript - 在我将 Modal eventListener 添加到标记后,Google maps API 停止显示地理位置
- jenkins - 在 Jenkins 管道选项{} 块中使用环境变量
- azure - 删除 Azure 存储帐户密钥
- c++ - 算法:最长近似间隔
- c# - Seeding Data with Entity Framework 3.0 with Model or Migration?
- java - 为什么我的 intlist 值没有增加,或者为什么 ellipse() 函数没有响应?
- c# - How Can I Remove This Extra Grid Space?
- python - 基于RPC的大地坐标到图像坐标系的转换
- django - DecimalField 的可变返回类型
- algorithm - 当分子和分母的基数和指数不同时如何进行指数除法?