【发布时间】:2017-12-20 13:33:36
【问题描述】:
我需要创建一个巨大的 NxN 数组。简单的数组是在堆栈上创建的,所以那里没有成功。静态数组必须是 const 或 unsafe mut,所以这不是。
我试过Boxing 那个数组:
const N: usize = 1000000;
let mut boxed: Box<[usize; N]> = Box::new([0; N]);
boxed[1] = 1;
但这无论如何都会溢出堆栈,大概是因为它创建了一个临时数组,然后将其复制到Box。
我尝试了Vec 的数组:
const N: usize = 1000000;
let mut v = Vec::<[usize; N]>::with_capacity(10);
v.push([0; N]);
结果相同。据我了解with_capacity 只分配内存;由于 Rust 没有构造函数,我仍然必须将某些内容推送(即)复制到该内存中。
那么,在不每晚进行安置新的情况下,这样做的正确方法是什么?
【问题讨论】: