I need a detailed document about druntime.

Adam D Ruppe destructionator at gmail.com
Mon Oct 11 15:24:07 UTC 2021


On Monday, 11 October 2021 at 15:18:11 UTC, Ferhat Kurtulmuş 
wrote:
> "Each call to initialize must be paired by a call to terminate.'

It is so the refcount works out.

When you call initialize, it does something like:

if(refcount == 0)
    actually intialize; // calls constructors etc
refcount++;


When you call terminate, it does:

refcount--;
if(refcount == 0)
    actually terminate; // calls destructors etc



If you don't pair it, the refcount will be off, so the next call 
to terminate will still see ref > 0 and not actually terminate.

The D main inserts a call to init before main and a call to 
terminate after main automatically.


More information about the Digitalmars-d-learn mailing list