tmdgks49   2년 전

Segmentation fault라는 걸 처음 보는데 메모리를 잘못 건드리면 나오는 오류라고 하네요. 코드에 메모리 건드린 부분이 없는데 왜 오류가 날까요?

djm03178   2년 전

변수는 메모리에 할당됩니다. 그러므로 변수를 사용하는 것 자체가 메모리를 건드리는 일인 것입니다.

특히 배열의 경우 인덱스를 통해 접근하기 때문에 그 인덱스가 할당받은 공간 내에 있지 않으면 허용되지 않은 메모리를 접근하게 되어 해당 오류가 발생할 수 있게 됩니다.

이 문제의 경우 주어지는 문자열의 길이가 최대 백만이므로 배열의 크기가 최소 1000001이어야 최대 길이의 문자열을 온전하게 담을 수 있지만 현재 길이는 1000밖에 안 되기 때문에 1001번째 글자부터는 할당받은 배열의 범위를 벗어난 허용되지 않은 메모리에 쓰여지게 됩니다.

tmdgks49   2년 전

정말 감사합니다. 이해 다 됐습니다. 잘 배웠습니다.

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