Wie erstellt man einen dynamischen Array in C ++?

3 Antworten

// Ein Feld mit 5 int-Elementen erzeugt man mit:
int *Feld = new int [5];




// Zum Schluss muss man es wieder loeschen.
delete [] Feld;

Der new-Operator kann auch einzelne Variablen (z.B. Klasseninstanzen) erzeugen, also nicht nur Felder.

Deshalb muss man dem delete-Operator mitteilen, ob es sich und ein Feld handelt. Dazu dienen die eckigen Klammern.

// einzelnes int erzeugen
int *Data = new int;

// und loeschen
delete Data; // ohne Klammern


PeterKremsner  05.07.2022, 17:19

Besser wäre ein Smart Pointer dann kann man das delete Weglassen und der Code ist eher gegen Memoryleaks geschützt.

vgl. https://stackoverflow.com/questions/9704469/c-new-vs-malloc-for-dynamic-memory-array-of-objects#

Wenn std::vector zur Verfügung steht, würde ich das nehmen - wozu sich überflüssige Mühe machen und überflüssige Fehlermöglichkeiten einbauen?

Es sei denn, es ist eine Schülerübung und ihr sollt den Umgang mit malloc() und free() üben.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Lothar1974  15.03.2023, 13:33

du meinst mit push_back immer noch ein Element dranhängen, wenn nötig?

leon1231223423 
Beitragsersteller
 06.07.2022, 09:03

Ist keine Schülerübung. malloc und free hab ich auch schon probiert aber es kommt da eine Fehlermeldung bei malloc

Int count = Länge;

int[] arr = new int[länge];

for (…){befüllen auf entspannt}


leon1231223423 
Beitragsersteller
 05.07.2022, 15:18

Verstehe ehrlich gesagt nicht ganz, wie das funktioniert. Habe auch erst angefangen zu programmieren :(

TripleBinary  05.07.2022, 15:24
@leon1231223423

dann gönn dir n paar vieos diggi, das oben war eh java, du musst durchziehen, gebe nicht auf, zieh durch, jeder kann es schaffen