dynamische Arrays - Arraylänge zur Laufzeit bestimmen

badboy

Grünschnabel
Hallo,

ich habe in einer Methode ein dynamisches Array angelegt (Membver einer Klasse) nun bräuchte ich in einer anderen Methode die Größe eben dieses Arrays. Gibt es eine Möglichkeit diese zur Laufzeit zu ermitteln? Ich mein irgendwo muss doch die Information über die Größe des allokierten Speichers abgelegt sein, oder?

lg badboy
 
moin


Versuchs mal so:
Code:
char array[10];

int anzahl_elemente = sizeof(array) / sizeof(char);
Nun ist anzahl_elemente eine 10.


Ob das jetzt auch auf dynamische Arrays angewendet werden kann, kann ich nciht sagen, aber du probieren.


mfg
umbrasaxum
 
nein, so schlau bin ich auch :)

bei dynamischen arrays erhält man mit dem sizeof-Operator die größe der Adresse, also 4 Byte, aber dank dir für die schnelle Antwort :)

lg badboy
 
Wenn diese Antwort sinnlos ist, tuts mir leid, aber ich bin noch Anfänger.

Wenn bekannt ist, dass du ein dynamisches Array aus Char Elementen hast, und du kennst die Anzahl an Elementen (kannst du ja mitzählen), dann kannst du doch die Größe des Datentyps (" sizeof(Char) ") mit der Anzahl multiplizieren?!
Also in diesem Fall 1Byte für jedes Zeichen mal der Anzahl an Zeichen. Dies müsste theoretisch funktionieren, da im Arbeitsspeicher immer gleich viele Speicher für 1 Char reserviert wird.

Wie gesagt wenn ich Quatsch erzähle korrigiere mich, aber ich glaube, dass das funktionieren müsste.

mfg Cecidi
 
moin


Das ist kein quatsch, aber nciht die Lösung.
Du hast das vorgeschlagen was ich oben im Code geschrieben hab, und zwar die Größe des char mal Anzahl der Elemente.
Nur das er nciht die Anzahl der Elemente weiss, sonder herausfinden will.


mfg
umbrasaxum
 
Wenn ich ein dynamisches Array erstelle, also quasi eine verkette Liste, dann bekomme ich aber doch mit, wenn ich ein neues Element einfüge? Oder nicht?

Dann kann ich doch einfach mitzählen ("i++;")

mfg Cecidi
 
Wenn ich ein dynamisches Array erstelle, also quasi eine verkette Liste, dann bekomme ich aber doch mit, wenn ich ein neues Element einfüge? Oder nicht?
Da komme ich nicht mit. Wie soll das mit C-Array gehen?

Seht euch doch mal die Klasse std::vector (und eventuell auch noch std::list) aus der C++-Standard-Library an. Das sollte eure Probleme lösen.
Tutorial zu std::vector
 
ja, nur leidersteht mir std::vector net zur Verfügung.
Ich hab die Information über die Länge des erstellten Arrays jetzt als Member mit eingefügt iund greif darauf zurück, die Lösung gefällt mir zwar net allzu sehr aber mir scheint keine andere Lösung möglich...

vielen Dank für eure Vorschläge.
lg badboy
 
Zurück