完善资料让更多小伙伴认识你,还能领取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是被分配在堆区或者静态数据区。
至于为什么会出现莫名其妙的逻辑故障,需要具体分析代码和程序运行环境才能确定。你可以尝试使用调试器跟踪程序运行过程,查看变量的值和函数调用情况,找出具体的错误原因。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
999 浏览 0 评论
2781 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9368 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2895 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2300 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:46 , Processed in 0.658801 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
61