完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境 Rt-thread studio ,at32F437程序中使用了软件包rt_vsnprintf,使用jlink下载程序后,程序运行总会出现莫名的逻辑故障。 map文件的栈设置如下 .stack 0x20000f68 0x800 load address 0x0809becc 对照另外一个at32F437工程内,也使用的软件包rt_vsnprintf,buf的分配就是在栈内的。 问题:为何此工程的函数内部数组buf分配不在栈内呢?程序才刚刚跑起来,0x800大小的栈不可能这么快用完 |
|
相关推荐
1个回答
|
|
在rt_vsnprintf函数内部数组分配栈内还是堆内并不是固定的,具体实现视编译器、操作系统和代码本身的设计而定。在你的代码中,栈区定义了一个起始地址为0x20000f68、大小为0x800的区域作为程序的栈空间。而在函数print_integer中,buf的地址被分配在了0x20000a68处,相对于栈区的起始位置偏移较大,因此可以猜测buf是被分配在堆区或者静态数据区。
至于为什么会出现莫名其妙的逻辑故障,需要具体分析代码和程序运行环境才能确定。你可以尝试使用调试器跟踪程序运行过程,查看变量的值和函数调用情况,找出具体的错误原因。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
798 浏览 0 评论
4836 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2622 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2958 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31763 浏览 11 评论
73087 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:00 , Processed in 0.442412 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号