-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;
}
끝에 "return new"라고 말해야합니다. 나는 그것을 잊어 버렸습니다. lol – e2298
realloc()이나 calloc()이 실패했는지 (NULL을 반환하는지) 확인하는 코드를 추가하십시오. 또한이 함수를 호출하는 방법을 보여주십시오 ... 오류가있을 수 있습니다. –
@ e2298 old_size 란 무엇입니까? –