4948번 - 베르트랑 공준
초보라 그런지 인터넷에서 찾은 방법들을 짜집기해서 하려는데 잘 되지를 않네요...
구름ide를 사용해서 하고 있는데 일정 숫자를 넣을 경우
double free or corruption (out)
중지됨(core dumped)가
뜹니다. 아마 동적할당 부분을 틀린 것 같은데 대체 어떤 부분에서 심각한 오류인지 구글링을 해도 잘 이해가 안됩니다.
주석 달은 부분은 그 전 오류인
main: malloc.c:2401: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.중지됨 (core dumped)
이거를 막으려고 달았는데 주석 부분을 달면 위의 오류가 나오고 미치겠네요...
정답 코드의 제출에는 성공했지만 알고 넘어가고 싶어서 질문드립니다.
arr에 할당된 메모리의 크기는 2*num-1까지의 인덱스에 접근할 수 있는 크기인데, 함수 내에서는 2*num까지 접근하고 있기 때문에 문제가 됩니다.
그리고 이건 컴파일 에러가 아니라 런타임 에러입니다.
int *arr = (int*)malloc(sizeof(int)*(2*num+10); 형식으로 바꿔봤지만 그래도 같은 double free 오류가 나네요...
다른 문제는 없는 걸까요?
malloc으로 할당한 건 free로 해제해야 합니다. delete[]는 new[]로 할당한 것만 해제해야 합니다.
ㅎ으ㅏㅇ러아 개념을 반대로 외우고 있었군요.... 정말 감사합니다!! 복받으세요!!
댓글을 작성하려면 로그인해야 합니다.
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)
이거를 막으려고 달았는데 주석 부분을 달면 위의 오류가 나오고 미치겠네요...
정답 코드의 제출에는 성공했지만 알고 넘어가고 싶어서 질문드립니다.