On Aug 29, 2013, at 2:37 PM, Hadley Wickham wrote: >> Not to be picky, but that is not the point. The alignment is due to the >> attrib pointer which is at offset 8 despite the fact that there is only a >> 4-byte element in front of it. Maybe for better illustration, this is the >> layout on 64-bit machines: > > Ok, thanks for the clarification. > >> >> * 4 bytes: sxpinfo header (= 32 bits) >> * 4 bytes: --- padding so next ptr is aligned --- >> * 8 bytes: pointer to attributes >> * 8 bytes: pointer to next node >> * 8 bytes: pointer to previous node >> * 4 bytes: length >> * 4 bytes: true length >> >> = 40 bytes >> >> This is already aligned so the payload alignment doesn't any extra padding >> so that has no effect at all. > > Do pointers always have to be aligned? >
Depends on the architecture, e.g., Sparc doesn't allow non-aligned pointers at all (results in a segfault), SV x86_64 ABI specifies pointers to be aligned at 8 bytes, but the x86_64 CPUs will allow misaligned pointers with a performance penalty (the same was true for x86 - i.e. misaligned pointers are tolerated with a penalty). ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel