I know arrays are in the stack by default, so I'm boxing it, but I still get a segfault if the size of it is too big.
How can I fix the problem and why will my program segfault if the size of the array is 5 million?
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);
}