如何创建一个非常大的数组?

时间:2016-12-03 23:16:58

标签: rust

我知道默认情况下数组在堆栈中,所以我正在装箱,但如果它的大小太大,我仍会遇到段错误。

如何修复问题?如果数组的大小为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);
}

0 个答案:

没有答案