2016-11-20 2 views
-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; 
} 
+0

В конце он должен сказать «вернуть новое», я забыл изменить его lol – e2298

+0

Пожалуйста, добавьте код, чтобы проверить, не вызывается ли realloc() или 'calloc()' (возвращает NULL). Также, пожалуйста, покажите, как вы называете эту функцию ... вполне возможно, что там есть ошибка. –

+0

@ e2298 Что такое old_size? –

ответ

0

Нашли ошибку, это было что-то после вызова resize_matrix, что просто так случилось, чтобы остановить свой выход в нужное время, чтобы заставить меня думать, что это resize_matrix, что его причиной , Извините за то, что вы не спешите.

Смежные вопросы