Seite 1 von 1

[geloest] größe eines Objekts herausfinden

Verfasst: 23. August 2010 15:35
von metz153
Hallo,

ich habe eine ganz allgemeine Frage:
Gibt es in Qt irgendeine Möglichkeit herauszufinden, wie groß ein Objekt (eigene Klasse) ist, und dynamisch angelegten Speicher berücksichtigt?
- Denn ein

Code: Alles auswählen

sizof(*this) 
würde dies ja nicht tun.

Wenn es keine Qt-möglichkeit gibt, hat da jemand einen anderen tip, ohne dass ich von Hand alle Zeiger derefernzieren muss um das hinzubekommen?

Vielen Dank schonmal im Voraus

Verfasst: 23. August 2010 16:04
von RHBaum
Gibt es in Qt irgendeine Möglichkeit herauszufinden, wie groß ein Objekt (eigene Klasse) ist, und dynamisch angelegten Speicher berücksichtigt?
nein, auch in C++ gibts da nix ...

Du kannst uebers BS ein paar infos bekommen, aber sehr genau, bzw sehr auf dieses Thama zugeschnitten sind diese Infos nicht.
Plattformunabhaengig gibts da eh nicht viel ...

Hintergrund:
der Heap und Freestore wird durch den speichermanager verwaltet ... dieser wiederum holt sich den speicher vom BS, meist sowieso "seitenweisse" ...
wenn jedes new in irgend eine speicheranforderung ueber die BS API enden wuerd, waer die Performance von dynamischen Objecten noch mehr im A... als sie jetzt scho ist :-)
Deswegen cacht c++ die speicheranforderungen ...
zwischen dem c++ speichermanager und dem "new" koennen (muessen aber nicht) noch 1 oder mehr schichten dazwischenliegen .... nen eigener speichermanager z.b. oder der von den STL containern z.b. (Allokatoren).

das heisst dein c++ programm wird fast immer mehr dyn. speicher sich holen, als die summe aller deiner news. und allocs ... usw.

wieviel speicher dein programm (genauer dein prozess) aber momentan angefordert hat, und wieviel er noch anfordern koennte, kann dir nur dein BS direkt mitteilen.

Ciao ...

Verfasst: 23. August 2010 16:08
von metz153
vielen Dank für die schnelle Antwort...

So etwas ähnliches hab ich mir auch schon gedacht, aber ich wollte nochmal auf nummer Sicher gehen.