我在以下网页中阅读了有关结构的填充:
http://software.intel.com/sites/default/files/m/2/c/d/3/9/25602-17689_w_spinlock.pdf
正如它所描述的:它建议使用以下语句对同步结构进行填充:
struct syn_str { int s_variable; };
void *p = malloc ( sizeof (struct syn_str) + 127 );
syn_str * align_p = (syn_str *)( (((int) p) + 127) & -128 );
我想到的是,它可以更容易地完成,例如:
struct syn_str { int s_variable; char padx[124] ; } in 32-bit OS
或者
struct syn_str { int s_variable; char padx[120] ; } in 64-bit OS
因为它喜欢做的就是用 128 个字节填充一个完整的结构,或者我为此错过了什么?
更新:
感谢您提供的所有信息!在发布问题后,我搜索了“对齐结构”,看起来“posix_memalign”似乎是非常正确的函数调用......