Größe von Objekt mit sizeof herausfinden?
-
Hallo!
Mein Programm ist recht speicherfressend, deswegen möchte sobald 250 mb RAM gebraucht werden soviele Objekte löschen bis ich bei 200 mb angekommen bin.
Das Aufaddieren soll so aussehen:
Player *ptrPlayer = new Player(file); // Bla(); Blubb(); usedBytes += sizeof(*ptrPlayer);usedBytes wird aber stehts um denselben Wert erhöht, ich glaube 52 bytes waren das. Die objekte sind aber definitiv größer, wo liegt mein Fehler?
-
uhm schrieb:
Hallo!
Mein Programm ist recht speicherfressend, deswegen möchte sobald 250 mb RAM gebraucht werden soviele Objekte löschen bis ich bei 200 mb angekommen bin.
Das Aufaddieren soll so aussehen:
Player *ptrPlayer = new Player(file); // Bla(); Blubb(); usedBytes += sizeof(*ptrPlayer);usedBytes wird aber stehts um denselben Wert erhöht, ich glaube 52 bytes waren das. Die objekte sind aber definitiv größer, wo liegt mein Fehler?
sizeof gibt dir zurueck, wieviel Speicher deine Struktur belegt, ohne
dabei den von dir im Objekt reservierten Speicher zu beruecksichtigen.Es wird lediglich die Groesse der einzelnen Datentypen + evtl. Padding-Bytes
zurueckgegeben.mfg
v R
-
Und ganz doof gefragt, wie komme ich an den richtigen Wert?
-
usedBytes += sizeof(Player);...ergibt die summe aller member-variablen. ist natürlich nur sinnvoll wenn die objekte nicht auch noch dynamischen speicher anlegen. den musste dann auch noch dazuaddieren:
usedBytes = usedbytes + sizeof(Player) + ptrPlayer->SumOfAllHeapObjects();btw: die funktion musste aber selber schreiben