On Monday, 19 June 2023 at 16:43:30 UTC, Steven Schveighoffer wrote:

In general, the language does not guarantee when the GC will collect your item.

In this specific case, most likely it's a stale register or stack reference. One way I usually use to ensure such things is to call a function that destroys the existing stack:

```d
void clobber()
{
   int[2048] x;
}
```

Calling this function will clear out 2048x4 bytes of data to 0 on the stack.

-Steve

Does it mean that if my function _func()_ is as following (say I don't use clobber), I could keep a lot of memory for a very long time (until the stack is fully erased by other function calls) ?


```
void func()
{
   Foo[2048] x;
   foreach(i; 0 .. 2048)
     x[i] = new Foo;
}
```

Reply via email to