1181번 - 단어 정렬
stl sort를 이용하기 위해서 words array를 char *의 일차원 array로 선언하고, 각 string을 저장하기 위한 메모리를 malloc으로 할당해주었습니다.
단어 길이가 50 이하이므로 char *에 51*sizeof(char) = 51만큼의 메모리를 할당하였구요.
다른 질문들을 확인해 보았는데, 런타임 에러의 경우에는 대부분 51만큼의 메모리를 할당하지 않아서 그렇더라구요..
어떤 부분에서 런타임 에러가 발생하는 것 일까요??
19번째 줄을 return 0으로 바꿔주면 됩니다. return 1 이라는 것은 "a가 b보다 앞선다"는 의미를 내포하는데, 그렇다면 실제로 a == b인 경우에 cmp(a, b)도 1이고 cmp(b, a)도 1이라는 모순된 결과가 나오기 때문에 sort 함수가 당황하게 됩니다.
감샇합니다 덕분에 저도 풀었어요
그런데 0으로 해도 cmp(a, b)도 0이고 cmp(b, a)도 0이 되니까 모순되는건 마찬가지 아닌가요??
a가 b보다 작지 않고, b가 a보다 작지 않다는 건 모순이 아니라 둘이 같음을 의미합니다.
아 생각해보니 그렇네요 감사합니다
댓글을 작성하려면 로그인해야 합니다.
qkrclrl701 4년 전 1
stl sort를 이용하기 위해서 words array를 char *의 일차원 array로 선언하고, 각 string을 저장하기 위한 메모리를 malloc으로 할당해주었습니다.
단어 길이가 50 이하이므로 char *에 51*sizeof(char) = 51만큼의 메모리를 할당하였구요.
다른 질문들을 확인해 보았는데, 런타임 에러의 경우에는 대부분 51만큼의 메모리를 할당하지 않아서 그렇더라구요..
어떤 부분에서 런타임 에러가 발생하는 것 일까요??