전역 변수와 정적 변수는 특별한 지정 없이도 0으로 초기화됩니다.
C 표준 라이브러리가 제공하는 동적 할당 인터페이스 가운데 calloc은 초기화를 동작에 포함하고 있습니다.
자동 변수라든지 malloc 또는 realloc을 이용해 얻은 동적 메모리 공간 등은 초기화되어 있지 않습니다.
밍고스랑 카레 먹고 싶다.
전역 변수와 정적 변수는 특별한 지정 없이도 0으로 초기화됩니다.
C 표준 라이브러리가 제공하는 동적 할당 인터페이스 가운데 calloc은 초기화를 동작에 포함하고 있습니다.
자동 변수라든지 malloc 또는 realloc을 이용해 얻은 동적 메모리 공간 등은 초기화되어 있지 않습니다.
밍고스랑 카레 먹고 싶다.
나더 카레 좋아해 >_<
전역변수/정적변수/calloc 이외에는 초기화가 필요하다 그냥 이렇게 생각해도되나? 이펙티브에서도 초기화규칙이라는게 있긴하지만 좀까다롭기때문에 가장좋은방법은 '모든객체'는 그냥 사용전에 초기화 해버릇 해라~ 라고하는데
그건 C++이 더러워서 그럼 ^^
C는 미개... 아니 심플하니까 괜찮겠지...!
calloc == malloc + memset( 0 ) 라고 알면 되는 것.
스택에 생성하는것은 초기화해주지 않는다. 라고 알면 되는 것.
홍홍
VC++ 같은데서 디버깅모드에 스택을 0xCC 로 도배해주는것 같은건 정말 정말 예외인것. 몰라도됨. 걍 다 garbage 라고 생각하면 됨.
말을 좀 다듬자. static 영역에 생성하는 것만 초기화해 준다. ( heap 과 stack 은 초기화해주지 않음 )
0xCC도배의경우도 뭔가 의미가있긴한거같은데 아까실험하면서보니까 전부다 그걸로나와서 값자체는 0이아니니까 초기화되는건아닌데 저값으로 계속나온게 뭔가 의미가있는건지... 아님 랜덤?하게 뿌려진값이 저렇게 뭉쳐있던걸까...하는생각은하긴했는데
0xCC 의 의미는 INT 3 이야. 3번 인터럽트. 그건 break 지.
스택에 생성된 데이타가 코드처럼 실행될 이유는 없겠지만 만약 실행되더라도 break 걸리게 하겠다는 것.
뭔가있나보다하고 대충찾아보니 디버깅모드 /GZ 옵션을 사용한 경우, 초기화 되지 않은 변수에 자동으로 할당되는 값(스택) 이라곤하는데 GZ옵션이니 컴파일옵션이니 이런건아직잘몰라서.. 그러려니해버림
그리고 그냥 데이타로 봤을 때 아 이거 가비지네. 라고 사람들이 추측할 수 있도록 하나의 패턴으로 정의한 것.
의미자체는 있지만 뭐.. 사용자? 짜는입장에서는 가비지니까 신경쓸필요없는? 정도로 그런개념이 있다..로 알고가면대갰네용
ㅇㅇ 정확히 말하자면 debug trap 이라고 디버그 실행시 일단 정지하는 break 임.