在STL中,内存管理中,要求能够获取内存大小为8的整数倍。利于管理内存,而且在内存操作中以8的倍数操作最为方便。
比自己大的最小数可以考虑先进行+(8-1)小的数,此时获得的结果肯定比最小的8的倍数大。只需要减去超出的部分,即可获得最小的8的倍数值。超出的部分,(肯定《=(8-1)),置为0。所以操作为:(计算值+(8-1))&~(8-1)=最小的8的倍数。
具体代码为:
const int _ALIGN=8;
int a=30;
int b=(a+_ALIGN-1)&~(_ALIGN-1);
cout<<b<<endl;
cout<<(a+_ALIGN-1)<<endl;
cout<<~(_ALIGN-1)<<endl;