LWIP -自定义内存对齐
来源:互联网 发布:商家入驻开店源码 编辑:程序博客网 时间:2024/04/27 13:24
#define MEM_SIZE 15
#define MEM_ALIGNMENT 4
#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
其中MEM_SIZE 为要申请对齐字节数。MEM_ALIGNMENT 为对齐方式,4字节或2字节,1字节都可以
自己的理解:
所谓的 内存对其,就是讲内存数据个数对齐,假如对齐方式为4个字节,则需要的内存块应该为4的倍数。
假如要申请一个13个字节的内存块,要求对齐方式为4个字节,则内存块的实际大小应该为4的倍数,计算方式就是
LWIP_MEM_ALIGN_SIZE(13) 结果为(13+4-1)&~(4-1)=(0001 0000)&(1111 1100)=0001 0000=16
则内存块的实际大小为16个字节。
假如要申请一个14字节的内存块,且对齐方式要求也为4个字节,则内存块实际大小为:
LWIP_MEM_ALIGN_SIZE(14) 结果为(14+4-1)&~(4-1)=(0001 0001)&(1111 1100)=0001 0000=16
则内存块大小仍为16个字节。即4的倍数。
假如要申请一个12字节的内存块,且对齐方式要求也为4个字节,则内存块实际大小为:
LWIP_MEM_ALIGN_SIZE(12) 结果为(12+4-1)&~(4-1)=(0000 1111)&(1111 1100)=0000 1100=12
则内存块大小为12个字节。因为12就是4的倍数。所以申请后的内存空间即为12个字节。
下面是别人写的内存对齐的理解,有助于大家进一步理解内存对齐的意义。
http://capacity.blog.163.com/blog/static/20866413120125298408973/
在小型嵌入式系统中,往往需要自己设立内存管理模块,而内存对齐对后面的数据存储有着很大的影响。结合LWIP协议栈介绍一个内存对齐的方式,参见下面程序:
下面分析一下此种方式的要点,这是对齐方式为1字节
#define MEM_SIZE 15#define MEM_ALIGNMENT 1#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
LWIP_MEM_ALIGN_SIZE(MEM_SIZE) = 15;//当1字节对齐的时候,内存对齐(也可以认为是内存调整)后的值为15这是对齐方式为2字节
#define MEM_SIZE 15#define MEM_ALIGNMENT 2#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
LWIP_MEM_ALIGN_SIZE(MEM_SIZE) = 16;//当1字节对齐的时候,内存对齐(也可以认为是内存调整)后的值为16这是对齐方式为4字节
#define MEM_SIZE 15#define MEM_ALIGNMENT 4#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
LWIP_MEM_ALIGN_SIZE(MEM_SIZE) = 16;//当1字节对齐的时候,内存对齐(也可以认为是内存调整)后的值为16
- LWIP -自定义内存对齐
- 小议LWIP——内存对齐
- 自定义内存对齐方式
- 浅谈LWIP对齐问题
- 内存对齐与自定义类型
- 内存对齐与自定义类型
- 自定义类型与内存对齐
- 自定义类型大小计算 内存对齐
- lwip --内存简述
- lwip内存管理
- lwip内存分配方式
- Lwip内存管理
- LwIP动态内存管理
- 关键字 对齐 内存对齐
- LwIP的内存管理介绍
- lwip记录1--内存池
- lwip动态内存管理分析
- lwip-内存管理函数说明
- Wireless Tools for Linux
- 备份SQLserver数据时候出现还原数据库和“XX”数据库不一致解决
- 谷歌生梁时是与弹一位颗
- 顺序大学他注射笑:卜
- 成都夏季招聘会IT行业缺口大!
- LWIP -自定义内存对齐
- 参加广州PHP培训不再担心就业红牌
- C/C++: linux下打开新进程
- 文件上传设置@PHP.ini
- 在重载运算符时,类的对象可以直接访问私有成员解惑
- 嵌入式笔试面试题
- 2014.06.26 MySQL 用索引解决的一个性能问题
- 关于打包python成EXE的使用心得
- android-demo大全