完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有些全局变量初始化过程中会申请堆内存,但此时还没有进行rt_system_heap_init,就导致卡死在这里,可以将堆内存初始化移到SystemInit中执行吗,可能会有什么问题 在.cpp文件中 #include 会发现执行SystemInit后初始化全局变量过程中,会调用rt-thread\components\libc\compilers\armlibc\syscall_mem.c中的malloc,进而调用rt_malloc,size是16 void SystemInit(void) |
|
相关推荐
2个回答
|
|
全权有效管理所有全局变量
|
|
|
|
rt_system_heap_init应该放在SystemInit之前执行,因为SystemInit中可能会使用堆内存,如果此时堆内存还没有初始化,就可能会出现问题。
另外,全局变量初始化过程中申请堆内存是不推荐的,因为此时RTOS还没有完全初始化完成,可能会出现一些不可预知的问题。建议在RTOS完全初始化完成后再进行堆内存的申请和使用。 至于您遇到的问题,可能是由于某些库函数在初始化过程中使用了堆内存,导致申请失败而卡死。您可以尝试将堆内存初始化放在SystemInit之前执行,看看是否能够解决问题。如果还有问题,可以尝试逐步排查或联系库函数的开发者进行咨询。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1753 浏览 0 评论
1721 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6912 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1930 浏览 0 评论
5656 浏览 0 评论
80228 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 10:01 , Processed in 0.723825 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191