Dynamische Speicherverwaltung in C

Schnetze schrieb:
(initialisiere und free das dynamisch erzeugte Feld), aber der Test 2 (hänge hinten ein Element ran und lösche das letzte Element) failed, weil angeblich die initialisierung [..]
malloc() reserviert Speicher, free() gibt diesen wieder frei. Die Funktionen machen nur im Tandem Sinn.

dat ist dein Zeiger für den Array, der je nach Bedarf immer neu erzeugt werden muss.
"Vergrößern" oder "Verkleinern" ist bloß eine Metapher, die im Computer nicht existiert. Du erstellst immer einen neuen array der größer ist oder kleiner, wenn angebracht. Die vorhanden Werte des alten kopierst du einfach in den neuen. Das ist im wesentlich alles, worum es bei einem Vektor/ArrayList/Dynamischen Array eigentlich geht. Dazu musst du natürlich jedes Mal Speicher für den neuen Array reservieren bzw den Speicherbereich, den du für den alten verwendet hast wieder freigeben (mit free()).

Darum geht es in dieser Aufgabe. Es macht wenig Sinn, sich hier durchzutasten, wenn man nicht schon vorher weiß, worum es prinzipiell geht. Der Sinn der Aufgabe ist es dir zu zeigen wie Speicherverwaltung in C funktioniert, dazu musst du die Grundkonzepte verstanden haben. Das sehe ich bei dir nicht.

Dein Fehler ist also, das du eine sinnlose Operation durchgeführt hast. Du hast wenn du einen Zeiger deklarierst erstmal einen zufälligen Wert für die Speicheradresse drinstehen, was gefährlich ist, deshalb muss er mit NULL initialisiert werden.
DANACH kannst du dem Zeiger einen reservierten Speicherbereich mit malloc() zuteilen und mit free() gibst du den Speicherbereich wieder frei, wenn der array weg kann.

Wenn das für dich böhmische Dörfer sind, empfehle ich dir die Konzepte nachzuholen. Die Aufgabe setzt das voraus oder ist einfach didaktisch schlecht aufgebaut sonst.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Schnetze
@lokked habs geschafft. vielen dank.
@Limmbo ich weiß nicht obs verboten, ist glaub aber nicht. ich weiß nur dass Plagiarismus mit 0 Punkten bewertet wird.
 
  • Gefällt mir
Reaktionen: lokked
Nicht falsch verstehen, ich bin mir unsicher ob das zutrifft, da du ja auch viel in Eigenleistung machst. Aber deswegen hatte ja nach anderen Mitgliedern gefragt, wie die das sehen.

Soweit ich das verstehe, darf man schon Hilfe geben, nur darf man z.B. keinen vollständigen Code posten, der die Aufgabe dann komplett erfüllt.
 
  • Gefällt mir
Reaktionen: Schnetze
Zurück
Oben