MSVC++ 은 struct 타입에 대해서 zero-fill 을 해주나요?
디버거로 봤을땐 해주는 듯 하지만,, 원래 0 으로 채워져 있었을 확률을 생각하면 확신이 안 드네요...
혹시 아시는 분?
자료형이 struct인지 유무와 관계없이 전역변수와 static 변수는 0으로 초기화 될겁니다.
전역변수와 static 변수 중의 초기값이 없는애들. 즉 ZI영역에 들어가는 놈들은 0으로 초기화됩니다.
확실치 않지만 디버그 모드에선 안 하고, 릴리스 모드에선 해 줄겁니다. (확인 필요!!!)
그런데 그냥 코딩으로 초기화 하면 안 되남요?
ZI영역은 실행시 항상 0으로 초기화 됩니다. release/debug 관계 없습니다.
release 버전에서는 비초기화된 지역변수에 대해서 아무런 조치도 안해주지만, debug 버전에서는 debugging을 목적으로 자동으로 특별한 data (가령 0xCC)로 채웁니다. 물론, 이 설정은 변경가능합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
자료형이 struct인지
자료형이 struct인지 유무와 관계없이
전역변수와 static 변수는 0으로 초기화 될겁니다.
전역변수와 static
전역변수와 static 변수 중의 초기값이 없는애들. 즉 ZI영역에 들어가는 놈들은
0으로 초기화됩니다.
확실치 않지만
확실치 않지만 디버그 모드에선 안 하고, 릴리스 모드에선 해 줄겁니다. (확인 필요!!!)
그런데 그냥 코딩으로 초기화 하면 안 되남요?
아니지 싶습니다.
ZI영역은 실행시 항상 0으로 초기화 됩니다.
release/debug 관계 없습니다.
release 버전에서는
비초기화된 지역변수에 대해서 아무런 조치도 안해주지만,
debug 버전에서는
debugging을 목적으로 자동으로 특별한 data (가령 0xCC)로 채웁니다.
물론, 이 설정은 변경가능합니다.
댓글 달기