inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C++

6.1 배열 기초 [1 of 2] array

배열에서 링킹에러, 초기화에 대한 질문

348

작성자 없음

작성한 질문수 0

0

Q1.

강의에서 선언된 배열의 범위 밖의 index를 선언하면 링킹에러가 뜬다고 설명하셨는데, 왜 컴파일에러가 아닌 링킹에러가 발생하는건지 궁금합니다.

Q2.

배열을 초기화하지 않고 위 코드를 실행하면,

사진과 같이 -858993460이라는 고정된 값이 출력됩니다. 초기화하지 않으면 쓰레기값이 나오기 때문에, 실행될 때마다 다른 값이 출려될 거라 예상했는데 -858993460라는 수만 출력이 됩니다. 구글링해서 찾아봐도 다른 예시 코드에서도 -858993460만 출력되더라고요. 

이러한 이유가 궁금합니다.

배열 C++

답변 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

변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠

1

470

1

메모리 주소 10진수로 출력

1

655

1

클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.

1

500

1

여러가지 리턴 타입에 관한 강의가 어떤 걸까요?

1

534

1

메모리 주소에 관한 질분

0

679

1

인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.

0

553

1

형변환 오버로딩에서 const 관련 질문이 있습니다.

0

445

1

Digit 뒤에 reference를 사용하는 이유

0

510

1

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

0

324

1

dat파일이...

0

540

1

TODO:대입 연산자 오버로딩에 대한 소스코드입니다.

0

646

1

복사 생성자 관련 질문이 있습니다.

0

454

1

수업 중 궁금한점이 있습니다.

1

390

1

라이브러리자체가 이해가 되지 않습니다.

0

561

1

마지막 예제 질문

0

304

1

증감연산자 위치에 따른 수행 순서 질문입니다.

0

377

1

단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.

1

413

1

friend함수 관련 질문이 있습니다.

0

312

1

operator+ 정의부분에서 궁금한 것이 있습니다.

0

447

1

3분 17초 질문

0

352

1

함수에 값을 대입한다는 개념이 이해가 되지 않습니다.

0

448

1

int getvalue() const에서 const는 왜 뒤에 붙는건가요?

0

449

2

const Something &st에서 const를 빼면 안되나요?

0

301

1

friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??

1

494

1