View mode: basic / threaded / horizontal-split · Log in · Help
December 05, 2012
Getting memory size of class
sizeof always returns 4 or 8 regardless of size of class:

class myclass(T)
{
public:
   T v1;
   T v2;
   T v3;
   T v4;
   T v5;
   T v6;
}

writeln((myclass!byte).sizeof, (myclass!double).sizeof);

or even

writeln((myclass!int).classinfo.init.sizeof, 
(myclass!double).classinfo.init.sizeof);

from

http://forum.dlang.org/thread/dp9hct$nuf$1@digitaldaemon.com

So how does one get the actual memory usage of a class?
December 05, 2012
Re: Getting memory size of class
On 2012-12-05, 20:03, js.mdnq wrote:

>
> sizeof always returns 4 or 8 regardless of size of class:
>
> class myclass(T)
> {
> public:
>     T v1;
>     T v2;
>     T v3;
>     T v4;
>     T v5;
>     T v6;
> }
>
> writeln((myclass!byte).sizeof, (myclass!double).sizeof);
>
> or even
>
> writeln((myclass!int).classinfo.init.sizeof,  
> (myclass!double).classinfo.init.sizeof);
>
> from
>
> http://forum.dlang.org/thread/dp9hct$nuf$1@digitaldaemon.com
>
> So how does one get the actual memory usage of a class?

__traits( classInstanceSize, myclass!int )

http://dlang.org/traits.html

-- 
Simen
December 05, 2012
Re: Getting memory size of class
On 12/05/2012 08:03 PM, js.mdnq wrote:
>
> sizeof always returns 4 or 8 regardless of size of class:
>
> class myclass(T)
> {
> public:
>     T v1;
>     T v2;
>     T v3;
>     T v4;
>     T v5;
>     T v6;
> }
>
> writeln((myclass!byte).sizeof, (myclass!double).sizeof);
>
> or even
>
> writeln((myclass!int).classinfo.init.sizeof,
> (myclass!double).classinfo.init.sizeof);
>
> from
>
> http://forum.dlang.org/thread/dp9hct$nuf$1@digitaldaemon.com
>
> So how does one get the actual memory usage of a class?

(myclass!int).classinfo.init.length

At least that is what druntime is using.

-- 
Mike Wey
Top | Discussion index | About this forum | D home