정적 변수(static) 을 사용하다가
당연하게 런타임에 초기화 가능한 값을 넣어주었는데..
대학교 다닐 때 강의에서 들었던 기억으로는, (대부분 c언어)
정적 변수는 컴파일 타임에 초기화 된다는 기억이 갑자기 생각이 났다.
그런데 어떻게 런타임에 초기화가 가능한 값이 대입이 가능한가.. 해서
검색을 해 보았더니, dart공식 문서에는 동적초기화가 된다고 써 있네요.. ?.?
(런타임에, 정적 변수가 사용되는 시점에 초기화)
내 기억이 잘못됬나.. 해서 c언어 기준으로 다시 구글링 시작..
어떠한 블로그에서 c코드를 디스어셈블리 하여 분석한 글을 보았다.
(참조 : - )
해당 글에 따르면,, 컴파일 타임에 초기화 가능한 값들은 컴파일 타임에,
컴파일 타임에 불가능한 값들은 dart와 마찬가지로 동적초기화가 된다고 한다!!
(그 기능/불가능 은 어떻게 판단되는거지..? 기준이 뭔지는 잘 모르겠다)
여튼.. 나도 따라서 해 보며 공부!!
그런데.. 디스어셈블리된 코드를 보니
DATA,common
DATA,bss
이렇게 두 개가 나오는데..
data 영역이 data, bss 로 나뉘는게 아니라
그래서 val4,5는 bss영역에 잘 들어가는 듯 하고..
근데 val6 는 common영역인듯 한데 zerofill ...?