On 4/28/11 12:50 PM, Erik Faye-Lund wrote:
Alas, i have not seen these sha1 hash buffers being allocated unaligned (in my
very limited testing). In which spots are they allocated unaligned?
Like I said above, it can happen when allocated on the stack. But it
can also happen in malloc'ed structs, or in global variables. An array
is aligned to the size of it's base member type. But malloc does
worst-case-allignment, because it happens at run-time without
type-information.
I'd be very surprised if malloc() did "worst case alignment" - that'd
suck pretty badly from performance point of view. However, if you want
*guarantees* about the alignment, there's memalign() for heap allocations.
Stack allocation alignment is a harder issue but I doubt it's as bad as
you make it out to be. On x86, for example, stack pointer is almost
always 8 or 16 byte aligned with compilers whose writers have spent any
time reading the Intel optimization manuals.
So yes, your statements are absolutely correct but I strongly doubt it
matters that much in practice unless you're using a really crappy
compiler...
Pekka
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html