가능한 중복 :
why segmentation fault in this program이 경우 세그먼트 화 오류가 발생하는 이유는 무엇입니까?
int main()
{
char *a="asdasd";
int i;
for(i=0;i<6;i++)
{
(*a)++;
printf("\n%s",a);
}
}
출력 분할 오류
int main()
{
char a[]="asdasd";
int i;
for(i=0;i<6;i++)
{
(*a)++;
printf("\n%s",a);
}
}
없음 세그먼트 오류
운이 좋았 기 때문에 첫 번째 프로그램에서 세그먼트가 잘못되었습니다. 당신이 불행했기 때문에 두 번째 프로그램에서 세그멘테이션 오류가 없습니다. 스코프 내에 프로토 타입이없는'printf()'(또는 변수의 수를 허용하는 함수)를 호출하면 정의되지 않은 동작이 호출됩니다. 정의되지 않은 행동의 표현 중 하나는 세분화 오류 (좋은 징후)입니다. 다른 것은 여러분이 기대하는대로 작동합니다 (나쁜 표현) ... 아, 그리고 첫 번째 프로그램에서도 수정할 수없는 배열을 변경하려고합니다 : 정의되지 않은 동작의 또 다른 경우 – pmg
@pmg 증상에 대한 링크를 제공 할 수 있습니까? 정의되지 않은 행동? – bacchus
@bacchus : http://c2.com/cgi/wiki?UndefinedBehavior – pmg