나는이 C 프로그램을 가지고있다. 내가 직장에서 컴퓨터에서 프로그램을 실행하면c 프로그래밍 segfault unitialised int?
int indexLength;
char *args[1024];
while(args[indexLength])
indexLength++;
는, while 루프 라인은 나에게 indexLength 어떤 말도 임의의 값을 걸릴 segfault..and을 제공합니다. 하지만 집에서 리눅스 머신으로 프로그램을 실행하면 segfault가없고 프로그램이 정상적으로 실행됩니다.
내가 2 대의 컴퓨터 사이에서 생각할 수있는 유일한 차이점은 gcc4.7 레드햇 버전이 있고 페도라 OS를 실행 중이며 집에있는 컴퓨터가 ppa 저장소에서 gcc4.7을 다운로드 받았으며 우분투 운영 체제. 하지만 그게 유일한 차이라고 확신하지는 않습니다! 그것은 무엇 일 수 있는가?
편집 : 죄송합니다. segfault는 컴퓨터에서 indexLength = 0으로 초기화하면 사라졌습니다.
정의되지 않은 동작 참조 : http://en.wikipedia.org/wiki/Undefined_behavior –
indexLength의 초기 값을 알 수 없으므로이 질문에 대답 할 수 없습니다. – KevinDTimm
'indexLength'는 경계를 넘어서는 불확정 값을 갖습니다. args 배열의. – hmjd