完善资料让更多小伙伴认识你,还能领取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是被分配在堆区或者静态数据区。
至于为什么会出现莫名其妙的逻辑故障,需要具体分析代码和程序运行环境才能确定。你可以尝试使用调试器跟踪程序运行过程,查看变量的值和函数调用情况,找出具体的错误原因。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
883 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3025 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1409 浏览 0 评论
2039 浏览 0 评论
1574 浏览 0 评论
75139 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 15:55 , Processed in 0.580610 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号