2014-10-29 94 views
4

我希望验证与防锈专家这个简单的防锈程序(rustc 0.13.0-每晚在Linux x86-64的系统):堆栈溢出用大尺寸固定阵列中锈病0.13

/* 
the runtime error is: 
task '<main>' has overflowed its stack 
Illegal instruction (core dumped) 
*/ 

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

编译过程完美结束,没有错误,但在运行时程序失败,代码注释中显示错误。

Rust中的固定大小数组的维度是否存在限制或者这是编译器中某处的错误?

回答

7

锈病2MiB的默认堆栈大小,你只是运行的堆栈空间:

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

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

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

你的第一段代码不可再构建 – 2017-10-25 04:38:39