>>689
えーと、結果的に小さくなる事はないんですが...

if (((unsigned int)pointer) % boundary) {
↑ここで、既にアライメントされている時はなにもしない。
return (void *)((((unsigned int)pointer) / boundary) * boundary + boundary);
↑これは、いったん端数を切り揃えてから、boundaryを足す、
つまり、次の境界に移動する。
}

>>690
それ、いただきます。ヽ(´▽`)ノ