Static array initialisation

DLearner bmqazwsx123 at gmail.com
Wed Mar 31 18:03:22 UTC 2021


On Wednesday, 31 March 2021 at 18:00:32 UTC, Steven Schveighoffer 
wrote:
> On 3/31/21 1:54 PM, DLearner wrote:
>> On Wednesday, 31 March 2021 at 17:46:25 UTC, Imperatorn wrote:
>>> 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
>>>
>>> When I look there are 100. What makes you think there are 101?
>> 
>> I printed bytes from &MemPool[0] to just beyond &MemPool[99}.
>
> When you look beyond the bounds of where you have access to, 
> you are bound to see just about anything.
>
> The answer is no, the compiler does not write to memory beyond 
> the 100 elements. That memory *might* happen to have an 8 in 
> there. That's not proof of anything though.
>
> -Steve

I entirely agree - I wasn't saying anything was wrong, but I 
_was_ surprised.
Not least because it's not chance, I changed the initial value 
and the effect repeated with the new value.


More information about the Digitalmars-d-learn mailing list