嵌入式技术william hill官网
直播中

石玉兰

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

RT_Thread文档—内核对象模型-静态对象与动态对象存储位置疑问求解

在文档学习中看到其对静态内核对象与动态对象描述:“内核对象分为两类:静态内核对象和动态内核对象,静态内核对象通常放在 RW 段和 ZI 段中,在系统启动后在程序中初始化;动态内核对象则是从内存堆中创建的,而后手工做初始化。”
问题如下:
静态内核对象我理解是相当于 C语言中的初始值不为0的全局变量或是静态局部变量,其存储段应该为RW_data段即RW段。
动态内核对象我的理解是通过malloc()等函数开辟出的动态内存,其存储区为Heap(堆),属于ZI_data段(据我理解ZI_data段中包含STACK、HEAP)
就文档中的描述,我想问下,静态内核对象什么时候会放在ZI段?还是我的理解完全错了(刚接触这个RTOS,有点懵)
2.jpg

回帖(1)

尚文清

2023-3-14 10:28:57
静态对象一般指通过init接口初始化的,对应的动态是指使用create创建的。
被init的对象一般是直接定义的结构体,定义时并没有初始值,你说在哪?
扩展一下:其实被init的对象,也可以是malloc出来的,相当于手动干了create的活,但有些特殊场合也是需要的。
举报

更多回帖

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