数组的值第一个数总是为0是堆栈溢出的问题吗

2019-07-14 14:30发布

我在栈底定义了一个数组StackOverFlowPtrn[] ,然后执行了一些其他的程序,再检测这个数组,我发现这个数组的值第一个数总是为0,其他的数据是正确的,这是堆栈溢出吗??我修改了堆栈的大小还是一样的问题,请问 有人知道这是什么原因吗?

刚开始:
这是定义:extern uint32_t    StackOverFlowPtrn[]   _attribute_((section("STACK_BOTTOM"),zero_init))

StackOverFlowPtrn[0]=0xAAAAAAAA;
StackOverFlowPtrn[1]=0xBBBBBBBB;
StackOverFlowPtrn[2]=0xCCCCCCCC;
StackOverFlowPtrn[3]=0xDDDDDDD;

一段时间后,检测这四个值,第一个StackOverFlowPtrn[0]=0,其他三个是正常的。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
不会不会
1楼-- · 2019-07-14 19:12
 精彩回答 2  元偷偷看……
60user155
2楼-- · 2019-07-14 19:26
7762642422d 发表于 2019-1-18 08:39
你的section “STACK_BOTTOM”是怎么定义的?列出来看看。如此多定义一个STACK_BOTTOM,还不如直接使用“Stack_Mem”标号来引用栈底的位置:

我用的芯片是STM32F031的,我设置的是

Stack_Size      EQU     0x00000800

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
还是不行
60user155
3楼-- · 2019-07-14 23:32
不会不会 发表于 2019-1-18 08:53
那你设置多大,编译器那边应该可以看出堆栈有没有溢出的

怎么看???不懂。。。
60user155
4楼-- · 2019-07-14 23:41
不会不会 发表于 2019-1-18 08:53
那你设置多大,编译器那边应该可以看出堆栈有没有溢出的

这个怎么看啊,我用的芯片是STM32F031的,堆栈设置0x00000800,这应该足够大了 。。。。
7762642422d
5楼-- · 2019-07-15 04:16
60user155 发表于 2019-1-18 09:12
我用的芯片是STM32F031的,我设置的是

Stack_Size      EQU     0x00000800

一周热门 更多>