-1
У меня есть функция, которая делает матрицу больше в C. она работает в первый раз, когда вы ее используете, но во второй раз я получаю realloc(): invalid old size
. Любые идеи о том, что может произойти?изменение размера матрицы в C
Вот код:
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;
}
В конце он должен сказать «вернуть новое», я забыл изменить его lol – e2298
Пожалуйста, добавьте код, чтобы проверить, не вызывается ли realloc() или 'calloc()' (возвращает NULL). Также, пожалуйста, покажите, как вы называете эту функцию ... вполне возможно, что там есть ошибка. –
@ e2298 Что такое old_size? –