Ich wollte eine Funktion schreiben, die die Größe des dynamischen Array ändert und ermöglicht es dem Benutzer, es sofort zu füllen. Ich weiß, dass ich es bei der Verwendung von „realloc“ tun sollte (also tat ich und so funktioniert es ...), aber mein erster Versuch sah wie folgt aus:C dynamisch ändern Größe des Arrays mit malloc und memcpy
void ChangeDynamicArraySize(int* dArray, int oldSize, int newSize){
int* tempArray = (int*) malloc(sizeof(int) * oldSize);
CopyArray(tempArray, dArray, oldSize);
free(dArray);
dArray = (int*) malloc(sizeof(int) * newSize);
CopyArray(dArray, tempArray, oldSize);
for (int i = oldSize; i < newSize; i++){
scanf("%i", &dArray[i]);
}
PrintArray(dArray, newSize);
free(tempArray);
}
In Funktionskörper „print (Darray, newSize) " hat richtig funktioniert. Aber wenn von der Haupt() aufgerufen es gibt ein Ergebnis wie: - 17891602 - 17891602 - 17891602 - 17891602
So sieht es aus wie Darray befreit wurde ...? Aber wie ich weiß, zugewiesene Speicher wird nicht automatisch nach dem Beenden der Funktion freigegeben.
Dann was könnte der Grund sein?
A, und CopyArray ist nur meine Version von memcpy() – WJuz
'dArray' wird von Wert übergeben und Sie ändern nur seine lokale Kopie. – deniss