gpt4 book ai didi

rust - 当 Rust 中一个值覆盖另一个值时,堆栈上会发生什么?

转载 作者:行者123 更新时间:2023-11-29 07:58:30 25 4
gpt4 key购买 nike

<分区>

我正在阅读 Mastering Rust .第一章末尾有一个练习,其中提供了示例代码,任务是修复它,使用通常非常有用的编译器错误消息进行迭代。

预计以下是错误,但不是:

for line in reader.lines() {
let line = line.expect("Could not read line.");

对于完整的上下文,我有 entire code in a gist .这是我修复问题后的代码,相关行是 37 和 38。但是它需要提供一个文本文件作为参数。


我预计会出现错误,因为 line 在堆栈上(至少指针在堆栈上)。它仍然可以毫无怨言地销毁和替换是对的吗?

在内存管理和堆栈方面发生了什么?我假定 line 实际上是对字符串(&str 类型)的引用。那么,这很好,因为在任何一种情况下,指针本身 - 堆栈上的对象 - 只是一个 usize,因此两个 line 对象是相同的堆栈上的大小。

我可以用不同尺寸的东西来做吗?第二行可以说:

let line: f64 = 3.42;

在这种情况下,对象本身在堆栈上,并且它可能比usize 大。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com