RIDER님의 설명이 맞는것 같네요.
언어적으로나 컴파일된 최종 기계어나
str1[x] = 'x';
이 문장에서는 문제가 없고
str1이 가리키는 메모리가 constant영역인 것이 문제네요.
TEXT, DATA, BSS, STACK, HEAP말고, constant 세그먼트를 따로 두고 페이지
속성을 read-only로 바꾸어 버리는 것 같네요.
str1 = str2;
를 추가하니까 아무런 문제가 없군요.
뒤의 sizeof 부분은 사족인것 같군요. 문제와는 상관없네요.