Wieviel Speicher belegt ist?
-
Hi,
mit new und delete kann man ja wunderbar Speicher initialisieren!
Nun möchte ich gerne in einer int-variable den initialisierten speicher reinstopfen.
z.B.
int *x = new int[2];
würde ja 8 bytes belegen wenn man es mit new initialisiert, das bedeutet ich würde meine int-variable +=8 rechnen.
nun wie kann ich erfahren wieviel speicher new grade allokiert hat und wieviel speicher delete grade frei gegeben hat? Sollte in standard-c++ doch möglich sein oder?
-
############ schrieb:
nun wie kann ich erfahren wieviel speicher new grade allokiert hat und wieviel speicher delete grade frei gegeben hat?
... indem Du es Dir merkst. Die Größe hinterher rauszufinden ist mit Standardmitteln nicht möglich (sofern man nicht seine eigene Speicherverwaltung schreiben will).
-
Ich habe zwar deine Ausführungen nicht ganz verstanden, aber
sizeof(array)
sollte dir die Größe des Arrays in Bytes zurückgeben.
Es gibt aber auch Compilerspezifische Möglichkeiten, den aktuellen Speicherbedarf anzuzeigen.
-
Das ist Implementierungsabhängig, kenne keine Möglichkeit wie C++ einem das sagen kann. Dein Bsp. dürfte auf einem 32bit-System wohl 8 Byte verbrauchen, korrekt. Einfacher würde es gehen, wenn du std::vector<> benutzt.
Prinzipiell kannst du das "Ausrechnen" aber nur mit primitiven Typen (int, char usw.) und nicht-polymorphen Klassen (keine virtual-Methoden!) machen. Sobald du polymorphe Klassen benutzt, wird schwierig.
-
############ schrieb:
nun wie kann ich erfahren wieviel speicher new grade allokiert
auf msvc afair mindestens 32 bytes (ja, nicht bits). fein kann man's ablesen mit dem syemleistungs-anzeiger neben dem task-manager wenn man strg+alt+entf drückt und dann mal 10000000000 objekte allokiert.
-
ginge das wenn man new überläd?
-
########### schrieb:
ginge das wenn man new überläd?
Du kannst dir deinen eigenen Garbage Collector schreiben. Schau dir mal http://www.hpl.hp.com/personal/Hans_Boehm/gc/ an.
Findet man über die Suchfunktion