* Jonathan Wakely via Gcc:

> On Tue, 7 Jan 2025, 03:09 M Chhapgar via Gcc, <gcc@gcc.gnu.org> wrote:
>
>> Hello,
>>
>> I am learning about memory alignment and noticed that on my x86-64 machine
>> with GCC 14, a `complex double` has a size of 16 bytes, but an alignment of
>> only 8 bytes. I am curious as to why this is.
>
>
> Because it's roughly equivalent to:
>
> double arr[2];
>
> This also has size 16 and alignment 8.

Well, the story is a bit more complicated.  Array variables that are at
least 16 bytes large have 16 byte alignment.  This rule does not apply
to struct members.

The x86-64 ABI currently does not specify alignment for _Complex or
_Atomic types.

Thanks,
Florian

Reply via email to