C语言内存

1.一直对C语言内存的分布,不太清楚,模模糊糊,查了一些资料,简单叙述下,以后工作中再结合工作看看

	一、IAR内存的分布,通过看生成的map文件,分三个段;
			1、地址从低到高,先是代码段(有对应的地址),.主要是text(ro code)跟ro data(const只读数据);一般代码段的数据都是存储在内存的rom区,也就是flash区;
			2、接下来是数据段,主要是.data(已初始化的全局变量、静态全局、局部变量)、.bss段(未初始化的全局变量或初始化为零的全局变量、静态全局、局部变量);bss段,系统并不会给该段的数据分配空间,只是记录数据所需的空间大小;data段需要占用,内容由程序初始化;一般数据段的数据是存储在内存的ram区;
			3、最后是堆栈段,那主要就是堆跟栈,栈stack主要存储局部变量;堆heap手动分配内存;存储在内存的ram区;
	
	二、通过看map文件最后一块,条目列表,主要是两块:
			1、函数接口,全局函数、静态函数;全局函数-Code  Gb(global);静态函数-Code Lc(local),知道他们的地址;调试程序出错的时候可以跟踪定位下;
			2、变量,全局变量、静态变量;全局变量-Data Gb(global);静态变量--Data Lc(local);

2.内存主要是指ram跟rom

	通过看.icf文件,可以知道内存的大小,及ram、rom的分配大小还有堆栈的大小跟地址;可以知道ro code、ro data、rw data存储的地址空间;
  • 最后
    不知道从哪里听说了这么一句话,关于ram跟rom,简单说下,找到之后再拷贝吧,大致意思是:
    物理上来说:不清楚内存地址空间的变量,一直是存储在ram上,比如rw
    data、bss段;知道具体占用内存空间的是存储在rom,比如text段、ro data;
    暂时先写到这里,有其他的,再接着写吧;2021-03-04
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值