我在栈底定义了一个数组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,其他三个是正常的。。。 |
然后直接从“Stack_Mem”开始递增的、小心的写一些标识再对比。小心的原因是写的标识可能会与正常的栈内数据重合,导致栈被破坏。
评分
查看全部评分
评分
查看全部评分
我用的芯片是STM32F031的,我设置的是
Stack_Size EQU 0x00000800
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
还是不行
怎么看???不懂。。。
这个怎么看啊,我用的芯片是STM32F031的,堆栈设置0x00000800,这应该足够大了 。。。。