다음 코드에서 어떤 문제가 발생할까요?

과목: C++

문제 번호: 3437

medium
다음 코드에서 어떤 문제가 발생할까요?
string cars[3] = {"Volvo", "BMW", "Ford"};
cars[3] = "Tesla";
cout << cars[3];
A. 정상적으로 "Tesla"가 출력된다
B. 배열 크기가 자동으로 4로 증가한다
C. 컴파일 에러가 발생한다
D. 예측할 수 없는 동작이 발생한다

정답: D



이 코드는 배열의 고정 크기 특성을 위반하는 문제를 보여줍니다.

문제 분석:
cars[3]은 배열 크기(3)를 벗어난 접근입니다.
⦁ 유효한 인덱스: 0, 1, 2 (총 3개)
⦁ 인덱스 3은 배열 범위를 초과합니다.

발생 가능한 문제들:
⦁ 다른 메모리 영역을 덮어쓸 수 있습니다.
⦁ 프로그램이 예기치 않게 종료될 수 있습니다.
⦁ 디버깅하기 어려운 버그가 발생할 수 있습니다.
⦁ 보안 취약점이 생길 수 있습니다.

C++ 배열의 특징:
⦁ 고정 크기: 생성 후 크기 변경 불가능
⦁ 범위 검사 없음: 컴파일러가 범위 초과를 자동으로 막지 않음
⦁ 정의되지 않은 동작: 범위 초과 시 예측 불가능한 결과

해결책:
⦁ 벡터(vector) 사용으로 동적 크기 관리 가능

💡 학습 팁

이 문제를 포함한 C++ 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.