gspear   3년 전


합병 정렬(merge sort)를 이용해서 정렬을 하는 과정에서

함수 merge 내부에 구조체 포인터 temp에 적당한 크기로 메모리를 할당한 뒤에 free를 시행하는 과정에서 에러가 발생합니다. (코드 14번 줄, 29번줄)

그래서 temp를 전역 변수로 한 뒤 구조체 배열로 선언하니 문제없이 작동하더라구요. 혹시 malloc 과 free 함수를 많이 사용하면 문제가 발생하나요 ?

djm03178   3년 전

merge 함수는 temp[end]를 접근해야 하기 때문에 sizeof(User)가 end+1개만큼 필요합니다. 즉, sizeof(User) * (end + 1)만큼의 메모리가 할당되어야 하는데, 14번째 줄에서는 sizeof(User) * end에 1바이트만을 추가로 할당하고 있어서 부족합니다.

gspear   3년 전

괄호를 안쓴게 원인이었군요. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.