打印
[其他产品]

堆栈空间被超出,会触发栈溢出异常

[复制链接]
1205|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在PIC33系列微控制器中,如果发生栈溢出(Stack Overflow),即堆栈空间被超出,会触发栈溢出异常,导致陷阱复位。

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

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

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

使用特权

评论回复
沙发
tpgf| | 2024-3-4 17:07 | 只看该作者
每次操作的时候进行询问会不会浪费资源

使用特权

评论回复
板凳
我喜欢打游戏| | 2024-3-4 17:14 | 只看该作者
具体如何处理这种异常呢

使用特权

评论回复
地板
B1lanche| | 2024-3-5 15:58 | 只看该作者
堆栈溢出不就是会死机的么

使用特权

评论回复
5
Candic12e| | 2024-3-5 17:01 | 只看该作者
你可以用仿真的方式看看堆栈占用多少啊

使用特权

评论回复
6
Alina艾| | 2024-3-5 18:08 | 只看该作者
好像有个MAP还是啥的,可以看堆栈使用率吧

使用特权

评论回复
7
Charlotte夏| | 2024-3-5 19:12 | 只看该作者
一般跑操作系统的话,是可以看堆栈的使用情况的

使用特权

评论回复
8
Estelle1999| | 2024-3-5 20:22 | 只看该作者
我记得可以用什么语句实现对堆栈的数据进行查看,并且能看到每个线程的占用多少内存的

使用特权

评论回复
9
Carmen7| | 2024-3-5 21:27 | 只看该作者
你换个大点的芯片跑操作系统不就好了么

使用特权

评论回复
10
Emily999| | 2024-3-5 22:34 | 只看该作者
你设置堆栈设置的大一些

使用特权

评论回复
11
Annie556| | 2024-3-6 08:32 | 只看该作者
建议直接用H7TOOL这个仿真工具,可以监控堆栈使用情况

使用特权

评论回复
12
alxd| | 2024-3-6 10:09 | 只看该作者
异常的话当然会发生复位情况啊

使用特权

评论回复
13
Carina卡| | 2024-3-6 12:10 | 只看该作者
直接设置堆栈大一些就好了,边试边调呗

使用特权

评论回复
14
晓伍| | 2024-3-6 18:08 | 只看该作者
在写程序的时候就要注意堆栈的空间是否会溢出

使用特权

评论回复
15
八层楼| | 2024-3-6 18:42 | 只看该作者
在编译阶段会发现这个溢出的问题吗

使用特权

评论回复
16
观海| | 2024-3-6 19:16 | 只看该作者
如何实时的监测特定的状态寄存器呢

使用特权

评论回复
17
guanjiaer| | 2024-3-6 19:50 | 只看该作者
我们写代码还是尽量减少递归调用的层数

使用特权

评论回复
18
heimaojingzhang| | 2024-3-6 20:24 | 只看该作者
也可以在判定超出的时候禁止操作 进行人为的报错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

227

帖子

0

粉丝