Grösse von CStringArray ermitteln?
-
Hallo Forum,
ich hab ein CStringArray, in dem nichts steht, und wenn ich mit sizeof(cStrArr); seine grösse ermitteln möchte liefert der mir 20 zurück, auch dann wenn nichts drin ist, nicht ist hinzugefügt worden, GetSize() liefert 0 zurück? Warum das?
z.B.
CStringArray cStrArr; int size = sizeof(cStrArr); // size hat hetzt den Wert 20???Auf was beziehen sich die 20, ist das Byte, standard Grösse von CStringArray???
Werden diese 20 immer reserviert wenn ich ein CStringArray anlege???danke
pixel
-
sizeof liefert dir die größe des Datentyps (int, char, CString ...) in Bytes. Wenn du die Elementanzahl von deinem CStringArray haben willst dann probiers mal mit:
CStringArray foo; if(foo.GetSize() == 0) //...
-
Hallo Chris,
was mich interesiert ist ob diese 20 Bytes immer verwendet werden, egal ob was drin ist oder nicht???Grund:
class CMyObject : public CObject { CStringArray csArray; } // wenn ich jetzt 1000 objekte von Typ CMyObject anlegen würde, // würden ihre CStringArrays auch immer 20 Bytes belegen, für jedes CMyObject, // also 20.000 Bytes, auch wenn diese leer sind???Ich kenne schon die Funktionen von CStringArrays,
es geht mir um meinen RAM-Speicher, der verschwindet irgendwo, ich habe den Verdacht das diese CStringArrays nicht ganz unschuldig daran sind!!!Gibt es ein tool das den RAM überwacht?

mfg
pixel
-
Die CStringArrays geben den Speicher für ihre Objekte von selbst frei. Legst du vieleicht ein paar Arrays mit new an und löschst sie nicht mit delete?
class CMyObject : public CObject { CStringArray csArray; } // wenn ich jetzt 1000 objekte von Typ CMyObject anlegen würde, // würden ihre CStringArrays auch immer 20 Bytes belegen, für jedes CMyObject, // also 20.000 Bytes, auch wenn diese leer sind???Ich denke schon. Wenn du aber den CStringArrays Objekte zuweist, dann werden sie mehr Hauptspeicher belegen.
Gibt es ein tool das den RAM überwacht
Probiers mal mit http://www.meikel.com/de/ oder mit dem Taskmanager falls du Win XP oder höher verwendest.
-
Hallo,
kannst du auch mit win 2k den Taskmanager benutzen.
kannst mal probieren Paar Daten einzulegen und messen.
Ich denke getSize() sagt wie viele Datensätze sind drin und nicht wie viel Speicher. 0 bezieht sich auf 0 Daten in den Array
-
dokdok schrieb:
Ich denke getSize() sagt wie viele Datensätze sind drin und nicht wie viel Speicher. 0 bezieht sich auf 0 Daten in den Array
Ich dachte das er das mit der "größe" (des Arrays) meint.