内存池的内存地址对齐和长度按照2的幂取整
来源:互联网 发布:科比跟腱断裂赛季数据 编辑:程序博客网 时间:2024/06/05 11:47
#define ngx_align_ptr(p, a) \ (u_char *) (((uintptr_t) (p) + ((uintptr_t) a - 1)) & ~((uintptr_t) a - 1))
上面式子,当a等于2的幂的时候,比如,4,8,16等值时,
d加上(a-1) 之后的值肯定要比最小的a的倍数要大的。因为a为2的幂,所以(a - 1) 刚好后面几位都是连续的1,取反之后再相与一下之后,就把小于a的余数部分丢掉了。 不过如果a不是2的幂,比如a=3, d=1 ,那么推算一下,上面的计算就不成立了。
这种计算地址或者长度对齐,取整的宏还是很有用的。cpu访问对齐的数据跟快把,不对齐的的int之类的,有可能区要多次内存访问才能取到值出来。 写个简单的字符串内存池,AllocateString时打算把所有的字符串放到一个连续的内存块上,觉得还是把长度取整一下比较好。这样后续的对字符串的memcpy就是内存字对齐,更好吧。
0 0
- 内存池的内存地址对齐和长度按照2的幂取整
- 内存地址的对齐
- 内存分配地址的对齐
- 结构体的长度(内存对齐)
- 关于内存地址对齐的问题
- 实现地址对齐的内存分配函数
- 动态分配内存返回地址对齐的指针
- 固定长度的内存池
- 伤心的内存对齐~~~
- 内存对齐的问题
- 操作系统的内存对齐
- C++的内存对齐
- 内存对齐的问题
- ARM的内存对齐
- 所谓的 内存对齐
- 类的内存对齐
- 内存对齐的思考
- c++的内存对齐
- Embeded system 1
- 杭电 2149(巴什博弈)
- 3、通信工具编写HttpClient
- cocos2d-x 触屏事件详解
- 【UVA】10130-SuperSale(01背包)
- 内存池的内存地址对齐和长度按照2的幂取整
- 个人博客网建站优化经验总结(下)
- hdu 1272 小希的迷宫
- ios --- 动态获取键盘高度
- java 泛型的内部原理:类型擦除以及类型擦除带来的问题
- NSString类的常用方法
- java 简单爬虫
- 新浪微博API OAuth2 python客户端改进
- hoj2681Magic-Pen1