任何人都有建议有效地(内存使用方式)在数组元素上执行内存对齐,而不是第一个。例如,假设我有以下
unsigned char[516] a;
我想将[4]内存对齐到64字节边界?例如,如果大部分操作发生在最后512个,我想要SIMD矢量化,但偶尔会在前6个头字节上发生。
我知道我可以这样做:
unsigned char _a[576] __attribute__ ((aligned (64)));
unsigned char *a = _a+60;
但这浪费了60 + 8个字节(让我们假设我关心它)。
有更优雅的解决方案吗?