Ich habe eine Funktion, die eine Matrix in C größer macht. Es funktioniert das erste Mal, wenn Sie es verwenden, aber beim zweiten Mal bekomme ich realloc(): invalid old size
. Irgendwelche Ideen, was passieren könnte?Ändern der Größe einer Matrix in C
Hier ist der Code:
int** resize_matrix(int** matrix, long org_size, long size_inc){
long new_size = org_size + size_inc;
int** new;
int* temp;
new = realloc(matrix, new_size*sizeof(int*));
for(long i=0; i<org_size; i++){
//error happens here, when i=0, but only the second time you run it
temp = realloc(new[i], new_size*sizeof(int));
new[i] = temp;
//clears the added space
for(long i2=org_size; i2<new_size; i2++){
new[i][i2] = 0;
}
}
for(long i = org_size; i<new_size; i++){
new[i] = calloc(new_size, sizeof(int));
}
return new;
}
am Ende sollte es "return new" sagen, ich habe vergessen, es zu ändern lol – e2298
Bitte Code hinzufügen, um zu überprüfen, ob realloc() oder 'calloc()' fehlschlägt (gibt NULL zurück). Bitte zeigen Sie auch, wie Sie diese Funktion aufrufen ... es ist durchaus möglich, dass dort ein Fehler ist. –
@ e2298 Was ist old_size? –