ROUND_UP函数详解(STL内存分配的时候 内存对齐上调大小的函数)

本文详细解释了STL中用于内存对齐的ROUND_UP函数的工作原理,特别是针对2的N次幂字节对齐的情况。通过举例说明了函数如何确保内存地址能够正确对齐,并讨论了当对齐大小不是2的幂时可能遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

                 

                                        在STL的源码中,或者是其他地方碰到内存对齐的时候 一般会有一个类似于round_up的函数。 一般是像这样子

                  #define __ALIGN   8          //假设是按照8个字节对齐

                  static size_t ROUND_UP(size_t  bytes)

                   {

                          return  (((bytes) + __ALIGN - 1) & ~(__ALIGN  - 1));

                    }

    在我的QQ群有几个人问过 为什么这样子可以实现 上调对齐。

          首先要说的是 这个方法 只适用于 2的N次幂的字节对齐,如果碰到非2的N次幂这个方法是行不通的。

          也就是是说 比如是   ........00000000000001000000000.....类似于这样子的割据。

不能让这个存在两个1.<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值