arraygröße bleibt trotz realloc identisch!
-
ach verstehe...zeiger und arrays, so langsam begreif ich das.
Da ich jedesmal ein Element hinzufügen will muss ich also ne variable int length definieren, die dann die elemente zählt?
PS: aber der Speicherbereich vergrößert sich schon oder?
-
supertux schrieb:
...weil Zeiger nichts anders als Integer Variablen sind, deren Inhalt eine Adresse des Speichers ist.
wenn schon, dann 'unsigned' integer
-
jay186 schrieb:
PS: aber der Speicherbereich vergrößert sich schon oder?
Ja, der vergrößert sich schon - nur leider hast du keine portable Möglichkeit herauszufinden, wieviel Platz die malloc() und Familie zugestanden haben (intern vermerken sie es irgendwo, damit free() richtig arbeiten kann - also könntest du dir die Sources deiner malloc()-Funktion vornehmen und herausfinden, wie du drankommen könntest).
-
Ja, der vergrößert sich schon - nur leider hast du keine portable Möglichkeit herauszufinden, wieviel Platz die malloc() und Familie zugestanden haben (intern vermerken sie es irgendwo, damit free() richtig arbeiten kann - also könntest du dir die Sources deiner malloc()-Funktion vornehmen und herausfinden, wie du drankommen könntest).
Ich glaub das übersteigt meine C Fähigkeiten.
Da ich ein dynamisches "array" brauche wo jedesmal nur ein int wert dazukommt, werde ich wohl nen counter erstellen, der die länge speichert, also immer erhöht wird, wenn ein int angefügt wurde...sehe da keine andere möglichkeit mit meinen begrenzten fähigkeiten.
-
Ja, das ist wohl die einfachste Lösung - und in der Praxis völlig ausreichend. (Randbemerkung: Und am elegantesten dürfte es sein, wenn du Zeiger und Counter in eine struct zusammenfasst und dann geschlossen betrachtest)
PS: Bist du gezwungen, das Problem in C zu lösen? Oder könntest du auch mit C++ arbeiten?
-
CStoll schrieb:
Ja, das ist wohl die einfachste Lösung - und in der Praxis völlig ausreichend. (Randbemerkung: Und am elegantesten dürfte es sein, wenn du Zeiger und Counter in eine struct zusammenfasst und dann geschlossen betrachtest)
PS: Bist du gezwungen, das Problem in C zu lösen? Oder könntest du auch mit C++ arbeiten?
Ja mein Zeiger ist eh in nem struct, daher kommt auch die länge da rein.
Ich muss bei C bleiben(zum Glück?)!
-
jay186 schrieb:
Ich muss bei C bleiben(zum Glück?)!
Ich würde das eher als "leider" einstufen, aber das ist meine Meinung. (für C++ hätte ich dir angeboten, anstelle des nackten Speicherblocks einen std::vector<> zu verwenden)
-
Tim schrieb:
<off-topic>
supertux schrieb:
Zwar ist der Bereich linear, sprich, es gibt keine Lücken wie bei den Dateisystem,
Eigentlich ist es bei Systemen mit virtuellem Speicher ähnlich wie bei einem Dateisystem. Es wird dem Programm vorgegaukelt, ...
</off-topic>
das war mir neu, aber mann lernt jeden Tag etwas neues
Undertaker schrieb:
supertux schrieb:
...weil Zeiger nichts anders als Integer Variablen sind, deren Inhalt eine Adresse des Speichers ist.
wenn schon, dann 'unsigned' integer
du :p... immer bei jeder Kleinigkeit
... Mit dem Wort Integer wollte ich weder auf int noch unsigned int hinweisen, sondern dass der tatsächliche Inhalt des Zeigers numerischer Natur ist, also dass eine Zahl gespeichert wird.
CStoll schrieb:
jay186 schrieb:
Ich muss bei C bleiben(zum Glück?)!
Ich würde das eher als "leider" einstufen, aber das ist meine Meinung. (für C++ hätte ich dir angeboten, anstelle des nackten Speicherblocks einen std::vector<> zu verwenden)
darüber lässt sich streiten. du hast Recht, dass ein C++ Vektor deutlich angenehmer als ein C Arary ist. Aber manchmal finde ich, dass C++ einige Sachen zu kompliziert macht. Vielleicht liegt es daran, dass ich für C++ dumm bin und diese nicht verstehe(n) (will).
-
supertux schrieb:
Vielleicht liegt es daran, dass ich für C++ dumm bin und diese nicht verstehe(n) (will).
tröste dich, niemand versteht C++. noch nicht mal die C++ compiler, denn die kann man allesamt durch gültigen C++ code zum absturz bringen.
-
Ohja das hab ich schon oft hinbekommen...
Und manchmal bei eigentlich ganz simplen sachen, wohingegen der compiler irgendwelche 1000 fach geschachtelten templates einfach so schluckt