프로그래밍

 3198, 1/160 회원가입  로그인  
   odogi91
   [C언어] 메모리는 왜 초기화를 해야하나요??

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2954 [복사]



C언어를 배우다보니 자주 듣는게 초기화란 단어더군요.

프로그래밍하는데 첫 부분에서 변수 선언할때 초기화 한다고 하고......

메모리를 왜 초기화 하나요??

컴퓨터 새내기로서 궁금해요~~

  Hit : 4575     Date : 2011/04/16 10:13



    
clockmaker 모든 메모리가 깔끔하게 NULL을 갖고 있지는 않기 때문이에요. 처음 프로그램이 변수를 선언하며 램에 가서 "야 메모리점 ㅜㅜ" 해서 받아 오면 거기엔 지저분한 쓰레기값(정크값)이 들어있어요.

#include <stdio.h>
int main() {
int a;
printf("%d \n", a);
}
라는 코드를 컴파일 해서 실행해보시면, 우리는 a에 아무 값도 안 넣었지만 이상한 값이 튀어나오는 걸 알 수 있죠. 그래서 초기화를 해 줍니다 ㅇ_ㅇ
2011/04/16  
clockmaker 집에 서랍장이 필요해서 가구점에 가서 샀다고 해 보면, 이거 사온 직후에는 먼지도 많고 지저분하니까 걸레로 한 번 닦아서 쓰잖아요? 그런 이치입니다. 그냥 a=3; 이렇게 대입할 때는 문제가 없지만

printf("%d \n", a+5);
같은 코드를 치면서 a는 처음 쓴 거니 0이겠지? 그럼 이건 5가 나와야 해! 라고 기대하면 안 된다는 거죠. 쓰레기 값이 있으니까요.
2011/04/16  
/x7375696e6567 clockmaker님 설명에서 조그마한거 하나 알려드리자면
0 이든 스페이스바든 엔터든
컴퓨터에서는 모든 것이 값 입니다
2011/04/17  
/x7375696e6567 좀더 자세한건 메모리 다루실때 공부하시겠지만
변수를 선언할때, 관련 부분을 가르키는 포인터를 조정해서
변수가 메모리에 들어갈 공간을 마련해줍니다
그리고 나서 값을 할당해 주는거죠
2011/04/17  
winkivy 쓰레기값이 들어있거든요 찌꺼기 같은것들.. 그걸 0으로 시켜줘야 깨끗해지니까 그런후에 사용하는거죠. 2011/04/17  
odogi91 좋은 답변들 감사합니다. ^^ 2011/04/17