rob*_*tex 4 stack-overflow arrays 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];
}
Run Code Online (Sandbox Code Playgroud)
编译过程完美结束,没有错误,但在运行时程序失败,代码注释中显示错误.
Rust中固定大小数组的维度是否有限制,或者这是编译器中某处的错误?
Rust的默认堆栈大小为2MiB,您的堆栈空间不足:
fn main() {
println!("min_stack = {}", std::rt::min_stack());
}
Run Code Online (Sandbox Code Playgroud)
要分配该大小的数组,您必须使用box以下方法在堆上分配它:
fn main() {
let l = box [0u, ..1_000_000u];
}
Run Code Online (Sandbox Code Playgroud)