On Thursday, 4 January 2018 at 11:05:25 UTC, tipdbmp wrote:
What is your definition of a dangling pointer?
A pointer pointing to freed memory, which presumably '&a[0]' should be because it reallocates.

It allocates a larger array, but the old version is not freed up front. Right because there might be live references to the old data. Your pointer is such live reference. So while this pointer references that old version of the array, it's not freed. Only after no references are left the GC will make it free (and only when next GC cycle happens, not immediately).

It seems that the '~=' operator "knows" that there's a reference to 'a's old memory and it keeps it around instead of freeing it.

It's just not its job to free that memory. That memory is freed later by GC, when it's safe to do so.

Reply via email to