On Wednesday, 31 March 2021 at 17:27:44 UTC, DLearner wrote:
Hi

I did:
   immutable uint  MemSize=100;  // Memory size in bytes.

// Memory Pool
   ubyte[MemSize]  MemPool = 8;

And had a look in memory.
I think the compiler set up 101 '8's, not 100 in memory.

Which I did not expect.

Best regards

It's a bit interesting though.

The behavior seems to vary a bit between compilers.

DMD:
ubyte[100] example.MemPool:
db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,008h,008h,008h,008h ;........ db 008h,008h,008h,008h,000h,000h,000h,000h ;........ db 000h,000h,000h,000h,000h,000h,000h,000h ;........

LDC:
ubyte[100] example.MemPool:
        .zero   100,8

GDC:
ubyte[100] example.MemPool:
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8
        .byte   8

As you can see, all have 100 valid values, but DMD seems to be aligning to a multiple.

Reply via email to