我希望与 Rust 专家验证这个简单的 Rust 程序(Linux x86-64 系统上的 rustc 0.13.0-nightly):
/*
the runtime error is:
task '<main>' has overflowed its stack
Illegal instruction (core dumped)
*/
fn main() {
let l = [0u, ..1_000_000u];
}
编译过程完美结束,没有错误,但在运行时程序失败,并出现代码注释中显示的错误。
Rust 中固定大小数组的维度是否有限制,或者这是编译器中某个地方的错误?
Rust 的默认堆栈大小为 2MiB,您刚刚耗尽了堆栈空间:
fn main() {
println!("min_stack = {}", std::rt::min_stack());
}
要分配该大小的数组,您必须使用以下命令在堆上分配它box
:
fn main() {
let l = box [0u, ..1_000_000u];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)