#define _INTSIZEOF(n) ( (sizeof(n) +sizeof(int) - 1) & ~(sizeof(int) - 1) )
上述语句的作用是:内存向sizeof(int)对齐,在vc中,就是向4、8、16对齐。
其原理来自于数论的余数理论。
引入:设有N包货物,现有容量为M的集装箱,问需要集装箱的个数X的值。
前提:/为取整,%为取余。
解题:N/M=X……Y(Y是余数)
当Y=0时,我们需要正好X个集装箱
当1<=Y<=M-1<M时,我们需要X+1个集装箱
有衍生公式:N=MX+Y 同时用M取整 N/M=X+Y/M
其原理与四舍五入相似。有公式: (N+M-1)/M=我们需要的集装箱数
当N=MX,即Y=0时,原式:(N+M-1)/M = (MX+M-1)/M = MX/M + (M-1)/M = X
当N=MX+Y,即(1<=Y<=M-1<M)
我们将1<=Y<=M-1<M同时加上M-1
得:M <= Y+M-1 <= 2M-1 < 2M
所以Y/M = MIN(Y)/M= M/M = 1
所以:原式:(N+M-1)/M= (MX+Y+M-1)/M = MX/M + (Y+M-1)/M = X+1
所以:我们推出了(N+M-1)/M=我们需要的集装箱数
看了其他人的文章,总结的。有错请支持,定认真改正!!
参考:
http://blog.youkuaiyun.com/wooin/article/details/697106
http://www.cnblogs.com/kzloser/archive/2012/07/17/2594830.html
本文详细解释了如何使用数学原理计算内存对齐后的大小,并通过实例说明了如何根据给定的货物量和集装箱容量确定所需的最小集装箱数量。包括对数论的引用和详细解题步骤,旨在深入理解内存管理和资源分配背后的数学逻辑。
2263

被折叠的 条评论
为什么被折叠?



