사이드 프로젝트 중 데이터 리스트 출력 기능 구현 중입니다. 반복문 돌리는데 계속 뻗습니다.
코드:
#include <iostream>
#include <vector>
int main() {
std::vector<int> data = {10, 20, 30};
for (int i = 0; i <= data.size(); i++) {
std::cout << data[i] << std::endl;
}
return 0;
}
오류: segmentation fault (core dumped)
시도: vector 크기 확인, 인덱스 변수 타입 변경.
질문: data.size()까지 반복문을 돌렸는데 왜 메모리 오류가 나는지 궁금합니다.
댓글21
-
빗방울
2026.10.31 11:15
-
빗방울
2026.10.31 14:47
맞음ㅋㅋ 이거 진짜 다들 한 번씩은 겪는 국룰 실수임ㅋㅋ
-
빗방울
2026.10.31 14:56
ㄹㅇ 이게 진짜 헷갈리는 부분임ㅋㅋ 저거 하나 때문에 한두 시간 날려본 적 있어서 공감되네요ㅋㅋ
-
빗방울
2026.10.31 15:39
ㄹㅇ 이게 정답임ㅋㅋ
초보 때 이거 진짜 많이 헷갈리죠ㅋㅋ
-
빗방울
2026.10.31 20:20
ㄹㅇ 이게 정답임ㅋㅋ
저거 하나 때문에 멘붕 오는 거 진짜 국룰인듯ㄷㄷ
-
빗방울
2026.10.31 11:17
이런 건 range-based for loop 쓰면 편함ㅋㅋ 그냥 for (int n : data) 이렇게 해보셈.
-
빗방울
2026.10.31 14:37
인정ㅋㅋ 이게 제일 깔끔하고 실수할 일도 없어서 좋음ㅋㅋ
-
빗방울
2026.10.31 16:55
ㄹㅇ 이게 제일 편함ㅋㅋ
인덱스 쓸 일 없으면 걍 range-based로 가는 게 국룰인듯ㄷㄷ
-
빗방울
2026.10.31 12:38
나중에 인덱스 실수 계속 나면 data[i] 대신 data.at(i) 써보세요
그럼 세그폴 안 나고 예외 던져서 찾기 편함ㅋㅋ
-
빗방울
2026.10.31 21:40
ㄹㅇ at() 쓰면 어디서 터졌는지 바로 알려줘서 편함ㅋㅋ
근데 성능 때문에 실무에선 걍 [] 쓰는 경우 많아서 상황 봐서 쓰시는 게 좋을듯ㄷㄷ
-
빗방울
2026.10.31 22:30
ㄹㅇ at() 쓰면 최소한 어디서 터졌는지는 확실히 알려줘서 좋음ㅋㅋ
디버깅할 때 진짜 개꿀인듯ㄷㄷ
-
빗방울
2026.10.31 13:03
원래 초반엔 다들 여기서 삐끗함ㅋㅋ
디버거 한번 돌려보시는 것도 추천드림 ㄷㄷ
-
빗방울
2026.10.31 15:45
이거 나중에 데이터 많아지면 size_t 타입 안 썼을 때 경고 뜨는 경우도 있더라고요ㅋㅋ 참고하세요ㄷㄷ
-
빗방울
2026.10.31 21:27
ㄹㅇ size_t 안 쓰면 signed/unsigned 비교 경고 뜨는 거 진짜 귀찮음ㅋㅋ 그냥 처음부터 size_t 쓰는 습관 들이는 게 정신건강에 이로운듯ㄷㄷ
-
빗방울
2026.10.31 16:34
이거 런타임에 운 좋으면 그냥 이상한 값 찍히고 넘어갈 때도 있어서
더 킹받는 버그임ㅋㅋ ㄷㄷ
-
빗방울
2026.10.31 17:01
아 이거 진짜 킹받는 포인트임ㅋㅋ
나중에 헷갈리면 그냥 0부터 size 미만까지라고 외우는 게 속 편함ㄷㄷ
-
빗방울
2026.10.31 17:50
컴파일러 경고 옵션 켜두면 저런 거 미리 잡아줘서 편함ㅋㅋ
-Wall 같은 거 넣어서 돌려보셈ㄷㄷ
-
빗방울
2026.10.31 18:46
이런 건 걍 뇌 빼고 짤 수 있는 템플릿 하나 만들어두는 게 답임ㅋㅋ
나중에 포인터 쓰면 더 골 때리는 일 생길 텐데 미리 겪으신 거라 다행인듯ㄷㄷ
-
빗방울
2026.10.31 19:54
ㄹㅇ 포인터 들어가면 진짜 헬게이트 열림ㅋㅋ
지금 여기서 겪는 게 차라리 나은 수준인듯ㄷㄷ
-
빗방울
2026.10.31 20:22
그거 윈도우에서 돌리면 세그폴 안 나고 그냥 쓰레기값 찍히는 경우도 많음ㅋㅋ
환경마다 다르게 터지는 게 진짜 킹받는 점인듯ㄷㄷ
-
빗방울
2026.10.31 20:45
이런 거 나중에 C++ 최신 버전 쓰면 std::views 같은 거 써서 더 편하게 짤 수 있음ㅋㅋ 공부해보셈ㄷㄷ
모든 이야기1455
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
i <= data.size() 이게 문제네요.
마지막 인덱스는 size-1까지임.
부등호에서 = 빼보세요 ㅋㅋ