Problem with closures
Frits van Bommel
fvbommel at REMwOVExCAPSs.nl
Thu Jan 11 02:29:16 PST 2007
Alain wrote:
> AddFunc addN(int n) {
> int add(int i) {
> return i + n;
> }
> return &add; // the add function captured will remember the value of n
> }
[snip]
> Am i missing something?
You shouldn't return delegates to nested functions, just like you
shouldn't return pointers to local variables.
Delegates to nested functions contain a pointer to the stack frame of
the enclosing function. If that function has returned, the stack frame
may be corrupted (especially if you have called another function, like
apply(), since then).
More information about the Digitalmars-d-learn
mailing list