[1. 개요]
보통 배열에 대한 for 문은 0 ~ n 까지 증가하는 방식으로 작성하는 경우가 많은데,
반대로, n ~ 0 까지 감소하는 경우로도 (역 방향) 작성 할 수 있다.
이때, 실수 할 만한 부분은 아래와 같은 반복문이다.
for (unsigned int idx=n-1; idx >= 0; idx--) {
// something.
// access arr[idx]
}
문제는 변수 idx 의 자료형이 unsigned 라는 것이다.
idx == 0 인 경우 배열 접근이 가능하나, 여기서 -1 을 하는 순간 -1 을 unsigned 로 해석하여 매우 큰 수가 되어 버린다.
- 0xffffffff
그래서, idx 가 0 보다 작아지는 경우는 절대 발생 할 수 없고, 매우 큰 번지 수를 참조하려는 비정상 상황이 발생하는 것이다.
[2. 해결]
부호 있는 자료형을 사용하도록 한다.]
- 특히, 뺄셈 연산을 하는 모든 부분에 대해서...
'C++' 카테고리의 다른 글
OS 별 select() 함수 사용법 (0) | 2025.04.24 |
---|---|
구조체 대입 연산 (0) | 2025.04.15 |
Segmentation fault 사례3 (0) | 2025.04.14 |
Segmentation fault 사례2 (0) | 2025.04.01 |
STL priority_queue (0) | 2021.10.28 |