我知道默认情况下数组在堆栈中,所以我正在装箱,但如果它的大小太大,我仍会遇到段错误。
如何修复问题?如果数组的大小为500万,为什么我的程序会出现段错误?
extern crate rand;
use rand::Rng;
fn main() {
const SIZE: usize = 500000; // segfaut if SIZE is 5 million
let mut v: Box<[i32; SIZE]> = Box::new([0; SIZE]);
let mut i = 0;
while i < SIZE {
let mut rng = rand::thread_rng();
if rng.gen() {
v[i] = 1;
}
i = i + 1;
}
i = 0;
let mut sum = 0;
while i < SIZE {
sum = sum + v[i];
i = i + 1;
}
println!("Total number is {}", SIZE);
println!("number of 1 is {}", sum);
}