아무래도 님께서 i, j를 들어오는 그대로 받으셔서 a[i][j] = a[j][i] = 1 이런 식으로 넣으시다 보니까..
arr = (int**)malloc(sizeof(int*)*n+1);
arr[0] = (int*)malloc(sizeof(int)*n*(n+1)); <<This
This 부분에서 실제로는 n행 n+1열만큼의 배열을 생성하게 되고. (아마도 arr[0]을 가지고 2차원 배열처럼 쓰신 듯 싶은데요)
정점 번호는 1번부터 N번까지이기 때문에 i -> j가 N, x 꼴로 들어왔을 때 의도치 않게 index 벗어나겠네요..
이 부분 때문에, 실제로 arr[0]의 주솟값에 의도치 않게 덮어 씌워버리는 경우에 free(arr[0])을 해 버리면
arr[0]이 가리키는 주소는 실제로 할당이 된 공간이 아니기 때문에, free를 수행하면 Runtime을 뱉어버릴 거고요..
N행 M열의 2차원 배열은 보통 이렇게 많이들 쓰세요.
tkdlxmcnrwp 4년 전
마지막에 메모리를 해제하는 free()부분들을 안넣으면
정상적으로 작동을하고 맞았다고 뜨는데
free()부분들을 넣으면
비쥬얼스튜디오에서는 정상작동을 하지만
제출하면 런타임에러가 뜹니다.
어떤 부분이 문제인지 알려주세요 ㅠㅠ