Details on how aggregates are constructed with `new` and later destroyed by the GC

Per Nordlöw per.nordlow at gmail.com
Mon Oct 8 11:19:40 UTC 2018


I want to understand how calls to `new` for classes and structs 
are lowered by the compiler and druntime to a GC-allocation 
(specifically how the `ba`-argument bits are determined) followed 
by an initialization using default constructor or via a 
user-defined constructor called using arguments to `new`. And how 
this is related to the trait `hasElaborateConstructor` for both 
`classes` and `structs`.

I also want to understand how manually defined constructors and 
destructors affect the setting of the GC finalizer for a given 
aggregate type. And how this is related to the trait 
`hasElaborateDestructor` for both `classes` and `structs`.

Where's the dmd and druntime code that handles these steps?


More information about the Digitalmars-d-learn mailing list