在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.<