完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在栈底定义了一个数组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,其他三个是正常的。。。 |
|
相关推荐
6个回答
|
|
你的section “STACK_BOTTOM”是怎么定义的?列出来看看。如此多定义一个STACK_BOTTOM,还不如直接使用“Stack_Mem”标号来引用栈底的位置:
然后直接从“Stack_Mem”开始递增的、小心的写一些标识再对比。小心的原因是写的标识可能会与正常的栈内数据重合,导致栈被破坏。 |
|
|
|
那你设置多大,编译器那边应该可以看出堆栈有没有溢出的
|
|
|
|
7762642422d 发表于 2019-1-18 08:39 我用的芯片是STM32F031的,我设置的是 Stack_Size EQU 0x00000800 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp 还是不行 |
|
|
|
|
|
|
|
这个怎么看啊,我用的芯片是STM32F031的,堆栈设置0x00000800,这应该足够大了 。。。。 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
230 浏览 0 评论
2293 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2099 浏览 3 评论
4725 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2247 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 16:37 , Processed in 0.840921 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号