Difference between aligned malloc and standard malloc?
Asked Answered
C

1

6

I'm new to malloc and aligned malloc. I know how to use them. However, I don't know exactly in which case we should use aligned malloc instead of standard malloc. Can you explain it to me please?

Creatine answered 24/9, 2016 at 13:47 Comment(4)
Language? I assume C, but you should also provide other environment details (OS, language implementation, etc). Standard C has only malloc, guaranteed to be correctly aligned for all standard data types.Kimmie
I use in C11 standard in UbuntuCreatine
Added those as tags, please confirm and/or change as necessary.Kimmie
I have put them as tags, sorryCreatine
K
6

The glibc documentation makes it reasonably clear where you should use aligned_alloc:

The address of a block returned by malloc or realloc in GNU systems is always a multiple of eight (or sixteen on 64-bit systems). If you need a block whose address is a multiple of a higher power of two than that, use aligned_alloc or posix_memalign.

The C standard already guarantees that malloc will return a suitably aligned memory block for any of the standard types but there may be situations in which you want or need stricter alignment.

As one example, I seem to recall that SSE2 (SIMD) instructions need their data aligned on 16-byte boundaries so you could use aligned_alloc to give you that even on systems where malloc only guarantees alignment to an 8-byte boundary.

Kimmie answered 24/9, 2016 at 14:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.