delegate confusion
Moritz Maxeiner via Digitalmars-d
digitalmars-d at puremagic.com
Fri Aug 4 10:47:01 PDT 2017
On Friday, 4 August 2017 at 17:44:23 UTC, Timon Gehr wrote:
> On 04.08.2017 19:36, Moritz Maxeiner wrote:
>>>
>>> Next I run `bar`. I get the same output of "4 4 4 4 4". While
>>> this hack works in C#, I suppose it's reasonable to assume
>>> the D compiler would just reuse stack space for `j`, and that
>>> the C# compiler has some special logic built in to handle
>>> this.
>>
>> Yes, `j` exists once in foo's stack frame, so the same thing
>> as in the above happens, because `j`'s value after the loop's
>> termination is also 4.
>
> Make `j` 'immutable' to appreciate why this behavior is unsound
> (this is a form of memory corruption).
I was (explicitly) arguing that it's in keeping with the current
spec.
That the spec is unsound and should be updated is another matter
(on which I agree with you).
More information about the Digitalmars-d
mailing list