在Rust 0.13中使用大型固定大小的阵列进行堆栈溢出

时间:2014-10-29 17:39:10

标签: arrays stack-overflow rust

我希望与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中固定大小数组的维度是否有限制,或者这是编译器中某处的错误?

1 个答案:

答案 0 :(得分:7)

Rust的默认堆栈大小为2MiB,您的堆栈空间不足:

fn main() {
    println!("min_stack = {}", std::rt::min_stack());
}

要分配该大小的数组,您必须使用box在堆上分配它:

fn main() {
    let l = box [0u, ..1_000_000u];
}