打印
[应用相关]

内存管理问题恳请指教。。。。

[复制链接]
1406|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 | 只看该作者
u8 array8[4];
u32 array32[1];
占用一样多的空间,但u8可能是从地址3开始的。

使用特权

评论回复
地板
dirtwillfly| | 2014-3-2 09:38 | 只看该作者

使用特权

评论回复
5
baishuiyang| | 2014-3-2 22:01 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝