10814번 - 나이순 정렬
합병 정렬(merge sort)를 이용해서 정렬을 하는 과정에서
함수 merge 내부에 구조체 포인터 temp에 적당한 크기로 메모리를 할당한 뒤에 free를 시행하는 과정에서 에러가 발생합니다. (코드 14번 줄, 29번줄)
그래서 temp를 전역 변수로 한 뒤 구조체 배열로 선언하니 문제없이 작동하더라구요. 혹시 malloc 과 free 함수를 많이 사용하면 문제가 발생하나요 ?
merge 함수는 temp[end]를 접근해야 하기 때문에 sizeof(User)가 end+1개만큼 필요합니다. 즉, sizeof(User) * (end + 1)만큼의 메모리가 할당되어야 하는데, 14번째 줄에서는 sizeof(User) * end에 1바이트만을 추가로 할당하고 있어서 부족합니다.
괄호를 안쓴게 원인이었군요. 감사합니다.
댓글을 작성하려면 로그인해야 합니다.
gspear 3년 전
합병 정렬(merge sort)를 이용해서 정렬을 하는 과정에서
함수 merge 내부에 구조체 포인터 temp에 적당한 크기로 메모리를 할당한 뒤에 free를 시행하는 과정에서 에러가 발생합니다. (코드 14번 줄, 29번줄)
그래서 temp를 전역 변수로 한 뒤 구조체 배열로 선언하니 문제없이 작동하더라구요. 혹시 malloc 과 free 함수를 많이 사용하면 문제가 발생하나요 ?