gpt4 book ai didi

rust - 是否可以预测堆栈溢出?

转载 作者:行者123 更新时间:2023-12-03 07:57:19 25 4
gpt4 key购买 nike

我有一个使用递归的 Rust 程序。有时它会遇到“堆栈溢出”运行时错误。我想阻止这种情况发生。相反,我想在我的递归函数中使用类似的东西:

fn foo() -> u32 {
if stack_is_almost_full() {
panic!("Something is wrong with the recursion!");
}
// continue normally
}

可能吗?

最佳答案

您可以从 stacker::remaining_stack 获取剩余堆栈空间的估计值.

但是为了检测递归问题,一些更直接的方法可能更合适:

const MAX_DEPTH: usize = 1024;
#[inline(always)]
fn foo() -> u32 {
foo_rec(0).expect("MAX_DEPTH reached while recursing")
}

fn foo_rec(depth: usize) -> Option<u32> {
if depth > MAX_DEPTH {
None
}
// do your work possibly recursing, finally return something
if should_recurse() {
foo_rec(depth + 1)
} else {
Some(42)
}
}

fn should_recurse() -> bool {
true // uh-oh
}

关于rust - 是否可以预测堆栈溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75719083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com