[应用相关] 内存管理问题恳请指教。。。。

[复制链接]
1639|4
 楼主| huangfeng33 发表于 2014-3-1 21:03 | 显示全部楼层 |阅读模式
在内存管理那个实验中,有两个数组:

    __align(4) u8 mem1base[MEM1_MAX_SIZE];
    __align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));

    以第一行的代码为例,定义了一个数组 mem1base,数组大小为 MEM1_MAX_SIZE,数组的元素类型是 __align(4) u8.
请问:

    (1)这里的 __align(4) 该怎么理解????

    (2)为什么文中说“__align(4)定义内存池为 4 字节对齐,这个非常重要!如果不加这个限制,在某些情况下(比如分配内存给结构体指针),可能出现错误,所以一定要加上这个。”?????

    恳请指教。。。。
香水橙 发表于 2014-3-1 22:00 | 显示全部楼层
1)表示分配存储区需要按4字节对齐方式分配,即存储区的起始地址的最后两位为'0'。
2)在Cortex-M的指令系统有一次操作4字节、2字节和1字节的指令,这些指令分别要求内存地址必须是4字节、2字节或1字节。
aozima 发表于 2014-3-1 22:06 | 显示全部楼层
  1. u8 array8[4];
  2. u32 array32[1];
占用一样多的空间,但u8可能是从地址3开始的。
dirtwillfly 发表于 2014-3-2 09:38 | 显示全部楼层
baishuiyang 发表于 2014-3-2 22:01 来自手机 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部