peardanny   4년 전

초보라 그런지 인터넷에서 찾은 방법들을 짜집기해서 하려는데 잘 되지를 않네요...

구름ide를 사용해서 하고 있는데 일정 숫자를 넣을 경우

double free or corruption (out)

중지됨(core dumped)가

뜹니다. 아마 동적할당 부분을 틀린 것 같은데 대체 어떤 부분에서 심각한 오류인지 구글링을 해도 잘 이해가 안됩니다.

주석 달은 부분은 그 전 오류인

main: malloc.c:2401: sysmalloc: Assertion `(old_top == initial_top (av) && old_si
ze == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((u
nsigned long) old_end & (pagesize - 1)) == 0)' failed.
중지됨 (core dumped)

이거를 막으려고 달았는데 주석 부분을 달면 위의 오류가 나오고 미치겠네요...

정답 코드의 제출에는 성공했지만 알고 넘어가고 싶어서 질문드립니다.

djm03178   4년 전

arr에 할당된 메모리의 크기는 2*num-1까지의 인덱스에 접근할 수 있는 크기인데, 함수 내에서는 2*num까지 접근하고 있기 때문에 문제가 됩니다.

그리고 이건 컴파일 에러가 아니라 런타임 에러입니다.

peardanny   4년 전

djm03178 님 말씀대로 그부분 실수를 찾고 

int *arr = (int*)malloc(sizeof(int)*(2*num+10); 형식으로 바꿔봤지만 그래도 같은 double free 오류가 나네요...

다른 문제는 없는 걸까요?

djm03178   4년 전

malloc으로 할당한 건 free로 해제해야 합니다. delete[]는 new[]로 할당한 것만 해제해야 합니다.

peardanny   4년 전

ㅎ으ㅏㅇ러아 개념을 반대로 외우고 있었군요.... 정말 감사합니다!! 복받으세요!!

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