堆在ROM还是RAM?

原创
2020/07/21 15:07
阅读数 126

程序开始启动

当系统上电后根据BOOT的引导配置选择启动方式,默认是Flash启动,这时系统开始把所有的代码段搬到RAM中去运行
CPU就从内存中(RAM)获取数据和指令,根据相关指令来控制系统运行
数据存放位置:除了特定IO操作存到EEPROM里面,其他变量的使用全在RAM区,其中就有堆和栈。堆是由用户手动分配malloc,在整个程序运行期间都有效除非手动释放free。而栈在一个函数体内存在,例如main方法由系统自动创建,如果出现递归创建则很容易导致栈溢出,当系统执行完该函数功能后,栈空间数据也由系统自动销毁。
 

ROM和RAM数据比较
在这里插入图片描述

堆和栈的实际定义大小可查看,在.map文件中
在这里插入图片描述

总结

内存大小直接体现该系统所能同时运行的任务数,而所有系统运行中产生的数据存放位置全都在RAM区。除了读写磁盘

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部