작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
248
답변 2
1
1.
컴파일 에러 : 컴파일 타임에 알 수 있는 에러. 즉, 실행 전에 알 수 있는 에러.
런타임 에러 : 런타임에 알 수 있는 에러. 즉, 실행 해 봐야 알 수 있는 에러.
int array[5] 라는 배열이 있다고 했을 때 array[6] 을 참조하는건 컴파일타임엔 이게 에러인지 몰라요.
컴파일 타임은 '주로' 문법을 검사하는 정도에 그칩니다.(정적 메모리를 할당하는 등등 다른 일도 많이 합니다만..!) 컴파일러 입장에서는 array 크기가 5 라는 것을 내내 기억해두고 문법 검사를 하는게 아닌거에요! 그냥 코드 쭉 훑고 내려오면서 검사를 할 뿐입니다. 실제로 array[6] 이 문법에 어긋나는 것도 아니구요! 컴파일타임엔 문법 검사 같은 일을 할 뿐 실제로 array[6] 으로 접근하게 되는 메모리가 '정의'되어 있는 메모리인지 알 수가 없다는거에요.
array[6] 으로 접근하게 되는 메모리가 '정의'되어 있는지 알 수 있는 방법은 직접 실행하는 것 뿐입니다. 그렇기 때문에 런타임에러입니다.
2.
홍재윤님께서 설명해주셨네요 :)
주로 쓰레기값은 16진수로 cccccccc 거든요! 그게 10진수 정수로 변환하면 저 숫자라서 그렇습니다.
1
저는 강사님과 관련없는 일반 수강생입니다....
윈도우 계산기로 십진수 -858993560를 2진수 32비트로 해보면 1100 1100 1100 1100 1100 1100 1100 1100 나오네요~ 16진수로는 c c c c c c c c 이구요~
-858993460 is 0xcccccccc
. It's the bit pattern that MSVC uses to fill uninitialized values in debug builds. This helps you identify cases of uninitialized variables.
참조 :
https://stackoverflow.com/questions/32485095/858993460-being-output-for-an-uninitalized-variable