请问堆栈溢出问题

2019-07-20 10:00发布

请问各位大侠如果出现堆栈溢出、数组下标越界问题,  如何排查,定位出错的原因及解决办法? 谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
lhf_1230
1楼-- · 2019-07-20 13:45
 精彩回答 2  元偷偷看……
liu_z-w
2楼-- · 2019-07-20 17:16
数组下标越界后,MDK会报错啊。但是堆栈溢出后,完全不会报错。具体我也纳闷,被堆栈溢出坑过很多次。
kmmyk
3楼-- · 2019-07-20 21:46
这是没办法完全提前预知的,一般情况下,使用FATFS或是操作系统,设大一点。
keil默认是0x400; 用FATFS时,用0x800
如果又用了操作系统,0xa00
有一点,如果你使用了printf函数,再加0x200
龙之谷
4楼-- · 2019-07-21 00:03
 精彩回答 2  元偷偷看……
xinyang
5楼-- · 2019-07-21 03:06
如果只是堆栈问题,  可以将堆栈大小增大。  如果是下标越界,就不太好查了,   有没有好的方法能够进行定位, 什么地方堆栈溢出, 什么数组下标越界了。
举例如下:

BYTE abyBuff[10];
int i = 0;
int nLen = 1000;   //nLen 是个不确定的值,  这里只是举例,  虽然现在可以用 nLen  跟 sizeof(abyBuff) 进行比较,  但以前写的程序有很多地方没做类似的检测判断,     出问题后,  请问有哪些方法进行问题定位???

for (i = 0;  i < nLen; i++)
{
     abyBuff[i] = 0x11;
}
bootblack
6楼-- · 2019-07-21 06:02
 精彩回答 2  元偷偷看……

一周热门 更多>