
fn main() { let _a = [0u8; 1024*1024]; //这行会溢出 let _b = Box::new([0u8; 1024*1024]); //这行也会溢出 let _c = vec![0u8; 1024].into_boxed_slice(); //最终解决方案 } 1 、为啥初始化一个 1M 的数组就会导致溢出
2 、为啥把数据放到堆还会溢出,是因为数据还是在栈上初始化然后转移到堆上的吗
1 leavelet 2022-06-01 18:37:25 +08:00 via iPhone 没能成功复现 |
2 Coelacanthus 2022-06-01 18:39:10 +08:00 via Android 关于第二个问题,是的,Box 是先在栈上初始化然后移动到堆上,这是个已知问题 |
3 Coelacanthus 2022-06-01 18:42:33 +08:00 via Android 关于第一个问题,你是不是 Windows ,Windows 默认用户栈只有 1M ,那肯定会炸 Linux 一般默认 8M |
5 leavelet 2022-06-01 19:21:50 +08:00 macos 也是 8M ,所以没测出来 学到了 |
6 my3157 2022-06-07 18:53:12 +08:00 search box-syntax |
7 oksbsb 2022-06-12 09:52:16 +08:00 |