변수는 메모리에 할당됩니다. 그러므로 변수를 사용하는 것 자체가 메모리를 건드리는 일인 것입니다.
특히 배열의 경우 인덱스를 통해 접근하기 때문에 그 인덱스가 할당받은 공간 내에 있지 않으면 허용되지 않은 메모리를 접근하게 되어 해당 오류가 발생할 수 있게 됩니다.
이 문제의 경우 주어지는 문자열의 길이가 최대 백만이므로 배열의 크기가 최소 1000001이어야 최대 길이의 문자열을 온전하게 담을 수 있지만 현재 길이는 1000밖에 안 되기 때문에 1001번째 글자부터는 할당받은 배열의 범위를 벗어난 허용되지 않은 메모리에 쓰여지게 됩니다.
tmdgks49 2년 전
Segmentation fault라는 걸 처음 보는데 메모리를 잘못 건드리면 나오는 오류라고 하네요. 코드에 메모리 건드린 부분이 없는데 왜 오류가 날까요?