堆栈溢出异常处理xe166

问题描述

| 如果发生堆栈溢出陷阱,我希望控制器执行以下操作: 发送消息以通知用户发生堆栈溢出 发送消息后进行重置 我想知道在开始此异常处理之前重置堆栈指针是否是个好主意,以确保在不破坏内存的情况下完成该过程,或者是否有更好的方法来处理此异常?     

解决方法

就我从早期编程早期的C167(我认为xe166就是从中编程)的回忆起来说,堆栈溢出异常并不意味着有任何错误。这只是意味着您在堆栈末尾。确实,有了足够的拼图扑克,您就可以使用堆栈溢出和堆栈下溢异常来“分页”更大的堆栈进出主内存! 因此,如果您可以确保自己自己不需要异常处理程序,那么无需重置SP就可以逃脱。我想您可能会从中调用一些函数,在这种情况下,有一些可用的堆栈空间可能会有用:) 您对“陷入困境的堆栈”的评论并不完全是问题-堆栈指针到达末尾后,任何进一步的堆栈使用情况都会搞乱其他情况,这可能是您的异常代码将依赖的数据。听起来您必须确保会发生重置,但是如果您使用错误的SP开始破坏内存,您将无法预测会发生什么。 因此,如果它是远程关键系统,请找到一种方法来为“紧急堆栈”提供内存,然后将SP指向该内存,然后再继续执行异常处理程序。