On Mon, Nov 24, 2014 at 11:15 PM, Stefan Karpinski <[email protected]> wrote: > That's not the point - if you already have memory and have to fill it, then > you're not in any position for the kernel to lazily zero it, so the > alignment of arbitrary arrays is irrelevant. The point SGJ was making is > that we want to allocate the memory using something calloc-like so that the > kernel can do lazy zeroing for us, but we also need that memory to be > 16-byte aligned, but there is not portable way to get 16-byte-aligned memory > that the kernel will lazily zero for you. We can have lazy zeroing or > 16-byte alignment but not both. This makes me wonder if we couldn't just > allocate 15 bytes more than necessary and return the first address that on a > 16-byte boundary.
On each system, malloc makes certain guarantees about the alignment of the pointer it returns. On a 64-bit system, malloc will likely return memory that is at least aligned to 8 bytes, maybe more. Thus one would need to allocate 8 additional bytes, not 15. -erik -- Erik Schnetter <[email protected]> http://www.perimeterinstitute.ca/personal/eschnetter/
