Sizeof class instance

Justin Johansson no at spam.com
Sat Oct 3 16:48:14 PDT 2009


Jarrett Billingsley Wrote:

> On Sat, Oct 3, 2009 at 5:50 PM, Justin Johansson <no at spam.com> wrote:
> > How does one determine the sizeof (in bytes) of an instance of a class in D?
> >
> > .sizeof works as advertised for structs, but for reference types,
> > .sizeof yields the sizeof the referencing variable (effectively same as size of a pointer)
> > and not the size of the underlying instance.
> >
> > I did try scanning the NG and read spec_D1.00.pdf.  Perhaps I missed it in the latter.
> >
> > btw. I was poking under the hood of std.xml and though, wow, instances of Element
> > class look humongous, and so I'm interested to how exactly how humongous.

> There's no way to get it at compile-time in D1. The best you can do is
> Class.classinfo.init.length.
> 
> In D2, you can use __traits(classInstanceSize, Class).


Thanks Jeremie and Jarrett for answers.

For investigative purposes (rather than adding up class member sizes in my head),
would I get a fair answer if I copied the class data members into a struct, did a struct
sizeof and added 4 bytes to allow for a virtual function table pointer (in the class and
assuming the class has a VFT)?




More information about the Digitalmars-d-learn mailing list