delegate confusion
Stefan Koch via Digitalmars-d
digitalmars-d at puremagic.com
Fri Aug 4 10:45:04 PDT 2017
On Friday, 4 August 2017 at 17:27:52 UTC, Timon Gehr wrote:
> In D, the foreach loop variable is a distinct declaration for
> each loop iteration, while in C#, the same loop variable is
> repeatedly reassigned. In C#, the issue is bad language design,
> while in D, the issue is a buggy compiler implementation
> leading to memory corruption.
> [ ... ]
> It's reasonable to assume that the D compiler uses the same
> memory location for all of the distinct variables. This is a
> dangling pointer bug, if you wish. Both of your examples should
> print "0 1 2 3 4".
> [ ... ]
>
> 3) heap allocate a chunk of space for each captured scope (as
> in lisp and C#).
>
> The way to go is 3). 1) is bad, because it completely prevents
> closures from being escaped, 2) is bad because it does not
> allow sharing of closure memory.
Thanks for you insight Timon.
Would you mind writing an ER. (enhancment request) for that.
And a small spec-like proto-DIP ?
I'd love to adopt that behavior for newCTFE where it is actually
the more straightforward way. (in light of the constraints
newCTFEs architecture has)
More information about the Digitalmars-d
mailing list