Problems Erweitern eines Arrays in C ++

Ich schreibe eine Simulation für den Unterricht und ein Teil davon beinhaltet die Reproduktion von Organismen. Meine Organismen befinden sich in einem Array, und ich muss das Array vergrößern, wenn sie sich reproduzieren. Da ich mehrere Klassen für mehrere Organismen habe, habe ich eine Vorlage verwendet:

template <class orgType>
void expandarray(orgType* oldarray, int& numitems, int reproductioncount)
{
    orgType *newarray = new orgType[numitems+reproductioncount];

    for (int i=0; i<numitems; i++) {
        newarray[i] = oldarray[i];
    }

    numitems += reproductioncount;

    delete[] oldarray;
    oldarray = newarray;
    newarray = NULL;
}

Diese Vorlage scheint jedoch irgendwie meine Daten zu beschädigen. Ich kann das Programm ohne Reproduktion ausführen (die Aufrufe von expandarray auskommentieren), aber der Aufruf dieser Funktion führt zum Absturz meines Programms. Das Programm stürzt WÄHREND der expandarray-Funktion nicht ab, sondern stürzt später bei einer Zugriffsverletzung ab.

Ich habe Funktionen geschrieben, um ein Array hunderte Male zu erweitern, und ich habe keine Ahnung, was ich dieses Mal vermasselt habe. Stimmt etwas in meiner Funktion nicht? Sieht es für dich richtig aus?

BEARBEITEN Danke für die Hilfe aller. Ich kann nicht glauben, dass ich etwas so Offensichtliches verpasst habe. Als Antwort auf die Verwendung vonstd::vector: Wir haben es noch nicht in der Klasse besprochen, und so albern es auch scheint, ich muss Code mit den Methoden schreiben, die uns beigebracht wurden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage