1、什么是栈?溢出又是什么鬼?
对于嵌入式开发的老手可能都知道,它就是一种先进后出的的数据结构,数据只能从一个端口压入,也只能从该端口弹出,兄弟们可以把它想象一端封死另一端开口的圆柱形容器,只要是容器它都有大小,不可能永无止境的装东西、总会装满,栈也是如此,栈本质上就是RAM上的一段有限长度且可读可写的内存,只不过只能通过一个生长方向的栈指针进行操作,当写入的数据量超出了栈空间的大小了,写到其它内存段了,这时候就是栈溢出了。
2、栈用来干甚呢或者说什么时候用到栈啊?
兄弟们 栈的用处很多,当发生函数调用时,运行现场的保存(特殊寄存器、通用寄存器 栈指针等)、过多形参的传递、函数帧的创建、函数内部定义的局部变量等都会用到栈;
3、栈溢出的现象
我从项目开发中遇到的有,程序进入异常的中断 、在debug模式下发现有些变量出现不可思议的值、程序不安预定的方式执行。这都可以考虑栈溢出了(或者是内存溢出如数组越界也可能导致此类现象)
4、如何避免栈溢出呢?
(1)控制函数的调用深度;
(2)尽量不要再函数中定义较大的数组;
(3)在工程配置时尽量把栈空间设置的大一点;
1332

被折叠的 条评论
为什么被折叠?



