我在Rust中做了一些分析。因此,我有一个相当大的查找表,创建一个需要430,467,210字节的多维数组。我已经多次尝试将其加载到Rust中,但是我一直在堆栈溢出。最近我使用Box
了解了堆分配,并试图将我的文件读入盒装切片。它仍然不起作用:
let mut temp_buffer = Box::new([0u8; 430467210]);
move_file.read(&mut *temp_buffer);
答案 0 :(得分:3)
盒装数组在将数组移动到堆之前仍然可以临时堆栈分配数组(特别是在非优化版本中)。要确保从开始分配堆,请使用向量:
let mut temp_buffer = vec![0u8; 430467210];
move_file.read(&mut temp_buffer);