Big struct/class and T.init

Steven Schveighoffer schveiguy at gmail.com
Sun Feb 19 18:26:08 UTC 2023


On 2/19/23 1:11 PM, Guillaume Piolat wrote:
> If my understanding is correct, the mere fact of having a:
> 
> 
>      struct S
>      {
>          char[16384] array;
>      }
> 
> And then using it anywhere, will necessarily lead to a S.init being 
> created and linked, leading to a binary size inflation of 16kb.
> This is not a super high concern, but can inform design decisions.
> 
> Is this correct?

Yes.

that's not the case for all-zero .init though. At least in 
`TypeInfo.initializer`, it's pointing to null with array size indicating 
the amount of zeroes to write.

Testing with run.dlang.io, switching between `char` and `int` changes 
the ASM output to show whether it's stored or not.

-Steve


More information about the Digitalmars-d-learn mailing list