完善资料让更多小伙伴认识你,还能领取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之前执行,看看是否能够解决问题。如果还有问题,可以尝试逐步排查或联系库函数的开发者进行咨询。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:44 , Processed in 0.680091 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1688