我看了一下填充在以下网页结构:关于填充同步结构
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个字节,或者说我在为这样错过?
更新:
感谢所有类型的信息!后问题后,我有 用Google搜索“排列结构”,看起来像“posix_memalign”似乎是相当正确的函数调用来使用......
这是为了对齐,124或120的填充不一定足够好,它取决于'malloc'的对齐。 –