나는 이성적인 문제를 발견하지 못했다. 문제는 for (i = size - 1; i >= 0; i--) {etc.}
에 대한 for 루프 내부에있는 것 같습니다. 여기서 size
은 메모리 버퍼에 저장된 파일의 크기이고 i
은 부호없는 정수입니다. i == 0
이 멈 추면 멈추지 않고 i = 4294967295
이되어 세그멘테이션 오류가 발생합니다. 조건부를 i > 0
으로 변경하면 문제가 해결됩니다.이상한 동작을위한 C for 루프
그러나 이런 특별한 종류가 아닙니까? for 루프가 C로 어떻게 작동하는지에 대한 중요한 부분을 놓치고 있어야합니다. 초기화, 조건부 검사, 증분/감소, 조건부 검사 등을 따르지 않습니까?
도움을 주시면 감사하겠습니다.
"i"는 부호없는 int이므로 0보다 크다. –
거의 없지만 @RaghuSrikanthReddy. – Bart
@ Bart의 의견은 약간 정확하지 않은 경우 정확합니다. 그는'나는'unsigned int'라는 이유로 항상''''와 같거나''0 ''보다 크다는 것을 확신합니다. Raghu가 말한 것과 거의 비슷합니다. – ravron