C 구조체 포인터 정렬 segmentation fault 질문
조회수 1054회
Record *record[] 라는 구조체 포인터를 정렬해주는 함수입니다. 그런데 메모리의 잘못된 사용이 전혀 안보여서 이렇게 질문드립니다. 여기서 왜 segmentation fault가 뜨는지요?? 다른 함수는 다 제대로 작동하는데 오직 이 함수만 들어가면 segmentation fault가 뜹니다... 도와주세요ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
#include <stdio.h>> int main(void) { int a[5] = {1,2,3,4,5}; int i,j; for(j=0; j<5; j++) { printf("%d\n",a[j+1]); } } //결과 2 3 4 5 0 // overflow!!
제가 볼때 위에 쪽답처럼 2중 for문 내에서
records[j+1]에 대해서 참조할때 해당 내용에 대해서 오버플로우 발생해서
segmentation fault 가 발생하지 않았나 싶습니다.
- 일부추가) 읽어올때는 문제가 안됩니다. 할당되지 않는 공간에 쓰려고 할때 발생하지용! records[j+1] = temp 처럼요
#include <stdio.h>> int main(void) { int *a[5] = {1,2,3,4,5}; int i,j; for(j=0; j<5; j++) { *a[j+1]='3'; } } //signal: segmentation fault (core dumped)
-
김호원님의 지적도 문제가 될 부분 같고, 더 문제가 되는 부분은 아랫부분 같습니다.
for( j = 0; i<count ; j++)
여기서
j
가 무한하게 증가하겠습니다.이런 부분은 디버그모드로 실행해 보고 죽었을 때의 로컬변수값들만 잘 들여다 보면 혼자서 해결될 부분 같아요. 사실 프로그램이 죽는 문제가 가장 원인이 확실하게 나올 때가 많죠.
댓글 입력