16バイト境界だから、それじゃ全然足りないと思うけど。
char dat[sizeof(CHoge) + 15];
CHoge *chp = (CHoge*)(((uintptr_t)dat + 15) & ~15);