【发布时间】:2021-04-29 09:44:55
【问题描述】:
考虑以下程序:
fn recursive_call(x: u32) -> u32 {
println!("x: {:?}", x);
recursive_call(x +1)
}
fn main() {
recursive_call(0);
}
当我运行cargo build && ./target/debug/recursive_call 时,在x: 58152 之后崩溃:
x: 58152
thread 'main' has overflowed its stack
fatal runtime error: stack overflow
Aborted (core dumped)
当我运行cargo build --release && ./target/release/recursive_call 时,它仅在x: 104728 之后崩溃:
x: 104728
thread 'main' has overflowed its stack
[...]
我想知道这种行为差异从何而来?发布与调试模式的堆栈大小是否不同?或者这是因为我缺少一些编译时优化(如果是,那么优化是什么?)
【问题讨论】:
标签: rust stack-size