[其他产品] 堆栈空间被超出,会触发栈溢出异常

[复制链接]
1989|17
 楼主| 发顺丰更大nc 发表于 2024-2-26 21:36 | 显示全部楼层 |阅读模式
在PIC33系列微控制器中,如果发生栈溢出(Stack Overflow),即堆栈空间被超出,会触发栈溢出异常,导致陷阱复位。

栈溢出通常发生在函数调用时,当函数嵌套层次较深或递归深度过大,导致堆栈空间不足以容纳所有的局部变量和函数调用信息时。为了防止这种情况引起的不可预测行为,PIC33系列微控制器设计了栈溢出异常,以便在发生栈溢出时进行处理。

当栈溢出异常发生时,控制将被转移到陷阱复位向量,即复位处理程序。这样可以确保系统重新初始化,避免栈溢出引起的问题。

要处理栈溢出异常,开发人员可以使用相关的异常处理机制或监视特定的状态寄存器来检测栈溢出。

tpgf 发表于 2024-3-4 17:07 | 显示全部楼层
每次操作的时候进行询问会不会浪费资源
我喜欢打游戏 发表于 2024-3-4 17:14 | 显示全部楼层
具体如何处理这种异常呢
B1lanche 发表于 2024-3-5 15:58 | 显示全部楼层
堆栈溢出不就是会死机的么
Candic12e 发表于 2024-3-5 17:01 | 显示全部楼层
你可以用仿真的方式看看堆栈占用多少啊
Alina艾 发表于 2024-3-5 18:08 | 显示全部楼层
好像有个MAP还是啥的,可以看堆栈使用率吧
Charlotte夏 发表于 2024-3-5 19:12 | 显示全部楼层
一般跑操作系统的话,是可以看堆栈的使用情况的
Estelle1999 发表于 2024-3-5 20:22 | 显示全部楼层
我记得可以用什么语句实现对堆栈的数据进行查看,并且能看到每个线程的占用多少内存的
Carmen7 发表于 2024-3-5 21:27 | 显示全部楼层
你换个大点的芯片跑操作系统不就好了么
Emily999 发表于 2024-3-5 22:34 | 显示全部楼层
你设置堆栈设置的大一些
Annie556 发表于 2024-3-6 08:32 | 显示全部楼层
建议直接用H7TOOL这个仿真工具,可以监控堆栈使用情况
alxd 发表于 2024-3-6 10:09 | 显示全部楼层
异常的话当然会发生复位情况啊
Carina卡 发表于 2024-3-6 12:10 | 显示全部楼层
直接设置堆栈大一些就好了,边试边调呗
晓伍 发表于 2024-3-6 18:08 | 显示全部楼层
在写程序的时候就要注意堆栈的空间是否会溢出
八层楼 发表于 2024-3-6 18:42 | 显示全部楼层
在编译阶段会发现这个溢出的问题吗
观海 发表于 2024-3-6 19:16 | 显示全部楼层
如何实时的监测特定的状态寄存器呢
guanjiaer 发表于 2024-3-6 19:50 | 显示全部楼层
我们写代码还是尽量减少递归调用的层数
heimaojingzhang 发表于 2024-3-6 20:24 | 显示全部楼层
也可以在判定超出的时候禁止操作 进行人为的报错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

276

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部