2014-10-29 61 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