On Monday, 17 November 2014 at 22:19:04 UTC, Vladimir Panteleev
wrote:
On Monday, 17 November 2014 at 16:40:18 UTC, ketmar via
Digitalmars-d-learn wrote:
On Mon, 17 Nov 2014 15:41:25 +0000
Andre via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com> wrote:
~this()
{
foreach(cp; this._columns)
{
}
}
don't do that in destructors. `_columns` field can be already
collected
by GC.
Last I checked, the GC finalizes all dead objects before
freeing them. InvalidMemoryOperation indicates that an
allocation occurred, where is it?
Found it. opApply is virtual, so the vtable is needed to call it.
The pointer is cleared during destruction, thus an access
violation occurs, which is attempted to be translated into a D
exception. However, when D attempts to allocate it, an
InvalidMemoryOperation occurs.