我希望与Rust专家验证这个简单的Rust程序(在Linux x86-64系统上每晚生成0.13.0):
/*
the runtime error is:
task '<main>' has overflowed its stack
Illegal instruction (core dumped)
*/
fn main() {
let l = [0u, ..1_000_000u];
}
编译过程完美无误,但在运行时程序失败,代码注释中显示错误。
Rust中固定大小数组的维度是否有限制,或者这是编译器中某处的错误?
答案 0 :(得分:7)
Rust的默认堆栈大小为2MiB,您的堆栈空间不足:
fn main() {
println!("min_stack = {}", std::rt::min_stack());
}
要分配该大小的数组,您必须使用box
在堆上分配它:
fn main() {
let l = box [0u, ..1_000_000u];
}