你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

堆栈溢出的问题

[复制链接]
zi约 提问时间:2017-9-1 08:46 /
悬赏8ST金币已解决
我在栈底定义了一个数组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,其他三个是正常的。。。



最佳答案

查看完整内容

你的section “STACK_BOTTOM”是怎么定义的?列出来看看。如此多定义一个STACK_BOTTOM,还不如直接使用“Stack_Mem”标号来引用栈底的位置: 然后直接从“Stack_Mem”开始递增的、小心的写一些标识再对比。小心的原因是写的标识可能会与正常的栈内数据重合,导致栈被破坏。
收藏 评论6 发布时间:2017-9-1 08:46

举报

6个回答
moyanming2013 回答时间:2017-9-1 08:46:23
你的section “STACK_BOTTOM”是怎么定义的?列出来看看。如此多定义一个STACK_BOTTOM,还不如直接使用“Stack_Mem”标号来引用栈底的位置:

QQ截图20170901113001.jpg

然后直接从“Stack_Mem”开始递增的、小心的写一些标识再对比。小心的原因是写的标识可能会与正常的栈内数据重合,导致栈被破坏。

评分

参与人数 1ST金币 +3 收起 理由
zero99 + 3

查看全部评分

gujiamao 回答时间:2017-9-1 09:15:59
那你设置多大,编译器那边应该可以看出堆栈有没有溢出的

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zi约 回答时间:2017-9-1 15:24:55
moyanming2013 发表于 2017-9-1 11:35
你的section “STACK_BOTTOM”是怎么定义的?列出来看看。如此多定义一个STACK_BOTTOM,还不如直接使用“St ...

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

Stack_Size      EQU     0x00000800

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
还是不行
zi约 回答时间:2017-9-1 15:25:48
gujiamao 发表于 2017-9-1 09:15
那你设置多大,编译器那边应该可以看出堆栈有没有溢出的

怎么看???不懂。。。
zi约 回答时间:2017-9-1 15:28:55
gujiamao 发表于 2017-9-1 09:15
那你设置多大,编译器那边应该可以看出堆栈有没有溢出的

这个怎么看啊,我用的芯片是STM32F031的,堆栈设置0x00000800,这应该足够大了 。。。。
moyanming2013 回答时间:2017-9-1 16:20:00
zi约 发表于 2017-9-1 15:24
我用的芯片是STM32F031的,我设置的是

Stack_Size      EQU     0x00000800

QQ截图20170901161934.jpg

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版