嵌入式技术论坛
直播中

王萍

7年用户 1340经验值
私信 关注
[问答]

keil下malloc和rt_malloc用的不是同一套底层函数,堆内存也不是用同一块?

keil5.25环境下,模拟仿真。rtt自己的heap管理,内存堆就是数组,截图中0x20005858-0x20010000地址范围内就是这个数组,初始化后就可以调用rt_malloc使用堆了。使用rt_malloc申请了内存,返回0x20007624地址,确实也在这个数组的地址范围内。现在问题是,在keil下,malloc和rt_malloc好像用的不是同一套底层函数,堆内存也不是用同一块。在启动文件中定义的heap为0,按道理来说,用编译器自带的malloc函数,应该申请不到内存。截图中,使用malloc却可以申请到内存,而且申请到的内存地址0x20005460也不在rtt管理的heap地址范围内。
疑问:
1、keil下malloc和rt_malloc用的不是同一套底层函数,堆内存也不是用同一块?
2、keil下malloc内存堆大小是在启动文件Heap_Size中定义的吧,和rtt的堆是相互独立的,互不相关?
3、keil下在启动文件定义堆为0,为什么malloc还可以申请到内存?
2.jpg
3.jpg

回帖(3)

李鑫

2023-4-17 16:11:45
rt-thread/components/libc/compilers/armlibc/syscall_mem.c 这里做了转接
举报

王萍

2023-4-17 16:11:54
nano里没有吧
举报

李鑫

2023-4-17 16:12:01
你可以指令级单步进去看下怎么走的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分