인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Key님의 프로필 이미지
Key

작성한 질문수

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

4.3 문자열이 메모리에 저장되는 구조

char str1[10]에 10글자 이상 입력 시 뜨는 한자

작성

·

1.2K

0

char str1[10]에 10글자 이상을 입력해보았습니다.
아래 출력된 한자도 메모리에 포함되는 것일까요?
왜 한자가 뜨게 되는건가요~?
 

답변 1

0

안녕하세요,

해당 부분은 쓰레기값입니다.

정확히는, 이미 메모리에 있었던 값이지만 사용되지 않은 값, 초기화되지는 않은 값이라 보면 됩니다.

('한자'가 메모리에 저장된 것이 아니라, 메모리에 있는 0과 1들을 문자 형태로 출력하려다 보니 저런 한자의 형태가 나온 것입니다.)

컴퓨터마다 메모리의 상태는 조금씩 다르므로 쓰레기값의 결과도 다르게 나옵니다.

가령 저의 환경의 경우, 질문자님과 동일한 소스코드를 돌렸을 때 아래와 같이 나오게 됩니다.

질문자님께서 str1 변수의 크기를 10만큼 잡아주셨지요?

하지만 str1 변수를 초기화하실 때에 그보다 큰 크기인 "Hello, World" 만큼을 할당해주셨습니다.

그렇기에 str1 변수 외부에 있었던 쓰레기값이 출력되는 것입니다.

감사합니다.

Key님의 프로필 이미지
Key

작성한 질문수

질문하기