完善资料让更多小伙伴认识你,还能领取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时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2267 浏览 0 评论
2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
18280 浏览 11 评论
2451 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
3856 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1292 浏览 0 评论
69489 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 13:15 , Processed in 0.701108 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号