C嵌入式开发之栈溢出

1、什么是栈?溢出又是什么鬼?

   对于嵌入式开发的老手可能都知道,它就是一种先进后出的的数据结构,数据只能从一个端口压入,也只能从该端口弹出,兄弟们可以把它想象一端封死另一端开口的圆柱形容器,只要是容器它都有大小,不可能永无止境的装东西、总会装满,栈也是如此,栈本质上就是RAM上的一段有限长度且可读可写的内存,只不过只能通过一个生长方向的栈指针进行操作,当写入的数据量超出了栈空间的大小了,写到其它内存段了,这时候就是栈溢出了。

2、栈用来干甚呢或者说什么时候用到栈啊?

   兄弟们 栈的用处很多,当发生函数调用时,运行现场的保存(特殊寄存器、通用寄存器 栈指针等)、过多形参的传递、函数帧的创建、函数内部定义的局部变量等都会用到栈;

3、栈溢出的现象

我从项目开发中遇到的有,程序进入异常的中断 、在debug模式下发现有些变量出现不可思议的值、程序不安预定的方式执行。这都可以考虑栈溢出了(或者是内存溢出如数组越界也可能导致此类现象)

4、如何避免栈溢出呢?

  (1)控制函数的调用深度;

  (2)尽量不要再函数中定义较大的数组;

  (3)在工程配置时尽量把栈空间设置的大一点;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值