OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2422|回复: 2

内存管理实验相关问题(2)

[复制链接]

22

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-11-25
在线时间
21 小时
发表于 2016-10-19 08:53:16 | 显示全部楼层 |阅读模式
//设置内存
//*s:内存首地址
//c:要设置的值
//count:需要设置的内存大小(字节为单位)
void mymemset(void *s,u8 c,u32 count)  
{  
    u8 *xs = s;  
    while(count--)*xs++=c;  
}       

my_mem_init(1)     //如果初始化 运行内存SRAM的话
那么
u8 mem1base[MEM1_MAX_SIZE]
u16 mem1mapbase[MEM1_ALLOC_TABLE_SIZE]
这两个数组的初始地址是多少呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-11-25
在线时间
21 小时
 楼主| 发表于 2016-10-19 08:55:35 | 显示全部楼层
①static无论是全局变量还是局部变量都存储在全局/静态区域,在编译期就为其分配内存,在程序结束时释放,例如:val_a、val_d、val_h、val_i。  ②const全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放,例如:val_c;const局部变量存储在栈中,代码块结束时释放,例如:val_j。  ③全局变量存储在全局/静态区域,在编译期为其分配内存,在程序结束时释放,例如:val_b、val_e。  ④局部变量存储在栈中,代码块结束时释放,例如:val_h、val_i。
回复 支持 反对

使用道具 举报

22

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-11-25
在线时间
21 小时
 楼主| 发表于 2016-10-19 08:57:54 | 显示全部楼层
整个程序下载到开发板,开始跑程序时,该分配到 运行内存的数据分配好之后,
是不是u8 mem1base[MEM1_MAX_SIZE]
u16 mem1mapbase[MEM1_ALLOC_TABLE_SIZE]这两个数组的对应的数据段就定下来了?直到整个程序结束,数组对应的地址段都不会变?
这样理解对吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 01:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表