내가 배열을 map[5][10001] 로 선언했는데
입력 받을 때 실수로 아래처럼 [10001][5]에 맞게 받았거든?
int n;
cin >> n;
for(int i = 0 ; i < n; i++ ) {
for(int j = 0; j < 5; j++) {
cin >> map[i][j]; }
}
이거 n >= 5 인 입력을 받으면 outofrange, runtime error 나 seg fault 뜨지 않음?
vs도 그냥 아무 문제없이 입력받고 출력하고, 백준도 그냥 틀렸습니다로 뜨네.. 오류 찾고 나니까 vs는 런타임에러 백준은 세그폴트 뜨지 않나? 라는 생각이 들어서
파이썬에서는 런타임에러가 뜨고 cpp에서는 돌아가기는 하지만 어느 메모리를 참조할지 알 수 없음
글쿤.. 난 out of range라고 생각해서 오류가 뜰줄 알앗음
Welcome to the world of C/C++
벡터 같은 거면 오류 띄워주는데 원시 타입 배열이면 안 띄워줌
얘네들 기본 철학이 '개발자를 믿어라'이기 때문에 저런 거 타입 검사 범위 검사 거의 안 해줌
그러면 arr[5]; cout << arr[5] 이런것도 안뜸?
진짜 모름 뜰수도 있고 안뜰수도 있고 ㅋㅋㅋ
뭐 그래도 gcc나 clang같은 구현체에선 +1정도는 무리없이 읽고 쓰기 가능하긴 함