Odd behavior found in GC when terminating application

Jonathan M Davis newsgroup.d at jmdavisprog.com
Fri Jan 5 14:35:44 UTC 2018


On Friday, January 05, 2018 14:29:41 Adam D. Ruppe via Digitalmars-d wrote:
> On Friday, 5 January 2018 at 14:23:30 UTC, solidstate1991 wrote:
> > I usually write my applications' main logic into one or more
> > classes unless it can be avoided, and thus I often use ctors
> > and dtors for initializing and cleaning up things.
>
> The problem with this is when the GC runs, it considers
> everything dead to have died at the same time - parent and child
> objects alike - and will run the destructors in whatever order is
> most convenient for the GC implementation.
>
> That means the SDL quit function may be called BEFORE other
> cleanup, leading to your access violation.
>
> Indeed, what you want to do is explicitly call things that need
> to be done in order... in order. Can't rely on the GC to call
> functions in any particular way.

Either that or use structs on the stack instead of classes on the heap so
that you're actually using destructors instead of finalizers.

- Jonathan M Davis



More information about the Digitalmars-d mailing list