【发布时间】:2020-03-05 08:10:08
【问题描述】:
这段代码运行良好:
use std::mem::size_of;
fn main() {
println!("{}", size_of::<[(); usize::max_value()]>());
let x = [(); usize::max_value()];
println!("done");
}
它会立即打印出0 和done。数组毕竟是 0 字节大,所以这是意料之中的。
但是,如果我使用 Vec,情况会有所不同:
fn main() {
let x = vec![(); usize::max_value()];
println!("done");
}
这会运行很长时间并且从不打印done。 为什么会这样?我还希望向量的实际大小为 0。所以它不应该需要分配或写入任何内存。什么需要这么长时间?
这只发生在我编译时没有优化。通过优化,它立即完成。
【问题讨论】:
标签: rust