【发布时间】:2021-05-01 09:42:30
【问题描述】:
在 C 中,在使用 scanf 或 gets "stdio.h" 函数获取和存储用户输入之前,程序员必须手动为读取的数据分配内存。在 Rust 中, std::io::Stdin.read_line 函数似乎可以在程序员不必事先手动分配内存的情况下使用。它所需要的只是有一个可变的String 变量来存储它读取的数据。它是如何在不知道需要多少内存的情况下做到这一点的?
【问题讨论】:
-
Strings 可以动态调整其内部缓冲区的大小。 -
@pretzelhammer 什么是内部缓冲区,
String如何知道将其调整大小? -
@nicoty
read_line以固定大小开始,并根据需要调整String的大小,直到用完整行。等效功能也可以是 implemented in C,它不是 Rust 独有的。 -
我明白了。感谢所有链接和澄清,它们帮助我更好地理解了这个问题。
标签: memory input memory-management rust io