2016-11-20 2 views
-1

C에서 행렬을 더 크게 만드는 함수가 있습니다. 처음 사용할 때는 작동하지만 두 번째 때는 realloc(): invalid old size이됩니다. 무슨 일이 일어날 지에 대한 아이디어가 있습니까? 그냥 그렇게 나에게 그것을 발생 resize_matrix 생각하기 위해 적절한시기에 내 출력을 정지 일어난 것을, resize_matrix에 대한 호출 후 뭔가이었다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

끝에 "return new"라고 말해야합니다. 나는 그것을 잊어 버렸습니다. lol – e2298

+0

realloc()이나 calloc()이 실패했는지 (NULL을 반환하는지) 확인하는 코드를 추가하십시오. 또한이 함수를 호출하는 방법을 보여주십시오 ... 오류가있을 수 있습니다. –

+0

@ e2298 old_size 란 무엇입니까? –

답변

0

가 실수를 찾았 여기

코드입니다 . 시간을 내서 죄송합니다.