C 언어로 전역 변수가 항상 초기화됩니까?
1854 단어 C
int x;
int main(void)
{
/* 略 */
}
표준에 따르면 "0으로 초기화된다"
「JIS X 3010:2003 프로그램 언어 C(2003).」의 p.95에 이하의 기재가 있습니다.
"b) 그 오브젝트의 형태가 산술형의 경우, (양 또는 부호 없음의) 0 에 초기화한다."라고 합니다. 이에 따라 전역 변수 x는 초기 값 0을 갖습니다. 실제로 많은 범용 계산기에서는 프로그램을 실행할 때마다 다시 로드되므로 전역 변수 x는 초기 값 0을 갖게 됩니다.
임베디드 시스템에서
임베디드 시스템에서는 전역 변수의 초기화에 주의가 필요합니다. 일반적으로 전역 변수가 할당된 메모리는 프로그램이 로드될 때 초기화됩니다 2 프로그램이 로드되지 않으면 전역 변수는 반드시 "의도한"초기값을 갖지 않습니다. [1, 9.3.5 절, pp.255-256]에 따르면, 많은 임베디드 시스템은 각 실행마다 프로그램을 다시로드하지 않습니다.
But in many embedded systems, the program is not necessarily reloaded for each run.
따라서 전역 변수 x는 반드시 초기 값 0을 갖는 것으로 가정할 수는 없습니다.
그럼 어떻게 하는 것이 좋은 실천인가요? main 함수가 있다면, main 함수의 본문에서 선언의 직후에 전역 변수의 초기 값을 할당하는 문장을 작성하는 것이 더 안전합니다.
int x;
int main(void)
{
x = 0;
/* 略 */
}
참고문헌
[1] Edward A. Lee and Sanjit A. Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach, Second Edition, MIT Press, ISBN 978-0-262-53381-2, 2017. htps : // p와 ぇ my. 베르케 y. 에즈 / 보오 ks / 에세 시아 /
외부 변수 ↩
일반적으로 bss 섹션에 할당되는 메모리는 이러한 초기화가 이루어집니다. ↩
Reference
이 문제에 관하여(C 언어로 전역 변수가 항상 초기화됩니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tetsuo_jp/items/20d6578fae56a6763e57
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
임베디드 시스템에서는 전역 변수의 초기화에 주의가 필요합니다. 일반적으로 전역 변수가 할당된 메모리는 프로그램이 로드될 때 초기화됩니다 2 프로그램이 로드되지 않으면 전역 변수는 반드시 "의도한"초기값을 갖지 않습니다. [1, 9.3.5 절, pp.255-256]에 따르면, 많은 임베디드 시스템은 각 실행마다 프로그램을 다시로드하지 않습니다.
But in many embedded systems, the program is not necessarily reloaded for each run.
따라서 전역 변수 x는 반드시 초기 값 0을 갖는 것으로 가정할 수는 없습니다.
그럼 어떻게 하는 것이 좋은 실천인가요? main 함수가 있다면, main 함수의 본문에서 선언의 직후에 전역 변수의 초기 값을 할당하는 문장을 작성하는 것이 더 안전합니다.
int x;
int main(void)
{
x = 0;
/* 略 */
}
참고문헌
[1] Edward A. Lee and Sanjit A. Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach, Second Edition, MIT Press, ISBN 978-0-262-53381-2, 2017. htps : // p와 ぇ my. 베르케 y. 에즈 / 보오 ks / 에세 시아 /
외부 변수 ↩
일반적으로 bss 섹션에 할당되는 메모리는 이러한 초기화가 이루어집니다. ↩
Reference
이 문제에 관하여(C 언어로 전역 변수가 항상 초기화됩니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tetsuo_jp/items/20d6578fae56a6763e57
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(C 언어로 전역 변수가 항상 초기화됩니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tetsuo_jp/items/20d6578fae56a6763e57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)