C에서 전역 변수 초기화
글쓴이: highvolt / 작성시간: 수, 2010/04/21 - 4:28오후
전역 변수의 초기화는 application의 시작 부분에 runtime시에 일어나는것 같습니다.
지금 제 상황에서는 CRT library를 link할수 없는(다른 C 표준라이브러리도 사용할수 없는)
상태입니다.
지역변수의 초기화는 각 함수의 시작에 있어서 Compiler가
stack에 설정하고 초기화하는 코드를 자동으로 포함 시키는것 같아서 이부분은 문제가 안되는것 같습니다.
문제는 전역 변수인데, compile시에 해당 영역을 초기화된 값을 포함 시켜 binary를
만드는 방법이 있을까요?
Forums:
전역변수는
전역변수는 실행파일상에서 초기화된 데이타 영역에 잡히는걸로 알고 있습니다.
그러니 CRT lib가 따로 초기화하지는 않을것 같습니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
전역변수..
초기화를 하면 RW영역에 잡히므로, binary에 포함이 됩니다.
즉, 실행파일에 포함이 되어있는것이죠.
초기화를 하지 않으면 ZI영역에 잡힐 것이고,
부트할 때 ZI영역 초기화 과정에서 0으로 초기화 됩니다.
gcc 4.2.2
arm gcc 4.2.2를 사용중인데,
이 버전은 source code상에 '0' 초기화를 해도 binary에 포함이 되지 않고,
runtime시에 초기화 해줘야 하는것 같습니다.
'0'으로 초기화 하는것은 ZI 영역에 포함되나요?
http://kldp.org/node/113405#c
http://kldp.org/node/113405#comment-521310
OTL
댓글 달기