내 코드 segfaults 및 이유를 모르겠습니다. (나는 좌변 포인터 역 참조 사용하는 경우이 같은 문제입니다.)C 문자열로 작성
1 #include <stdio.h>
2
3 void overwrite(char str[], char x) {
4 int i;
5 for (i = 0; str[i] != '\0'; i++)
6 str[i] = x;
7 }
8
9 int main(void) {
10 char *s = "abcde";
11 char x = 'X';
12 overwrite(s, x);
13 printf("%s\n", s);
14 return 0;
15 }
gdb를 디버거가 나에게 말한다는, 그 문제는 C - 문자열로, 나는 문자를 저장할 라인 6에이 무슨이다 그는 말한다 : 나는 K & RC 책에서 배우고이 장 2.8 (제거 기능)에서 예를 단순화
(gdb) run
Starting program: /tmp/x/x
Breakpoint 1, overwrite (str=0x8048500 "abcde", x=88 'X') at x.c:5
5 for (i = 0; str[i] != '\0'; i++)
(gdb) s
6 str[i] = x;
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0x080483e3 in overwrite (str=0x8048500 "abcde", x=88 'X') at x.c:6
6 str[i] = x;
(gdb) q
. 나는 문제가 어디 있는지 전혀 모른다.
'숯 STR 함수 인수로 동일하다. – sepp2k
틀린거야,'char str []'는 매개 변수 목록에서 사용될 때'char *'로 쇠퇴한다. – avakar
괜찮 았어.하지만 ... 나는 맞다. 어떤 경우에 그것이 다른 것인지 자세히 설명해 주시겠습니까? – Toad