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 、为啥把数据放到堆还会溢出,是因为数据还是在栈上初始化然后转移到堆上的吗

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 Jun 1, 2022 via iPhone 没能成功复现 |
2 Coelacanthus Jun 1, 2022 via Android 关于第二个问题,是的,Box 是先在栈上初始化然后移动到堆上,这是个已知问题 |
3 Coelacanthus Jun 1, 2022 via Android 关于第一个问题,你是不是 Windows ,Windows 默认用户栈只有 1M ,那肯定会炸 Linux 一般默认 8M |
4 starlz OP @Coelacanthus 是的,刚发现 Windows 的栈默认只有 1M... |
5 leavelet Jun 1, 2022 macos 也是 8M ,所以没测出来 学到了 |
6 my3157 Jun 7, 2022 search box-syntax |
7 oksbsb Jun 12, 2022 |