C로 연습하다가 세그멘테이션 폴트(메모리 접근 위반)를 하루에 열 번은 보는 것 같아요. 그냥 "Segmentation fault (core dumped)"만 딱 뜨고 어디서 왜 터졌는지를 안 알려주니까 답답하네요.
지금 겪은 것만 봐도 몇 가지 상황이 있었어요. 초기화 안 한 포인터를 그냥 역참조했을 때랑, malloc으로 받은 걸 free 하고 나서 또 접근했을 때 났거든요. 대충 이런 코드였어요.
int *p;
*p = 10; // p가 어디를 가리키는지 모름
int *q = malloc(sizeof(int));
free(q);
*q = 5; // 이미 해제한 메모리
제 생각엔 결국 "허락 안 된 메모리 건드리면 난다" 정도로 이해했는데, 이게 맞나요? 그리고 실무에서 세그폴트가 제일 자주 나오는 대표적인 상황들을 좀 정리해서 알려주시면 미리 조심할 수 있을 것 같아요. 배열 범위 넘는 것도 여기 들어가나요? 그리고 이거 원인 위치를 빨리 찾는 방법이 따로 있는지도 궁금합니다.