2012-07-18 2 views
2

Coding Guidelines for Cocoa전역/정적 변수를 0/NO/nil로 명시 적으로 초기화하는 것이 좋습니다.

당신은 __bss 섹션에 반대 그들은 __DATA 세그먼트의 __data 섹션으로 병합되도록 정적 변수를 초기화해야한다. 초기화에 사용할 명백한 값이 없으면 0, NULL, 0.0 또는 적절한 값을 사용하십시오.

__bss는 __DATA와 비교하여 나쁜 의미입니까? 하지만 __bss는 바이너리 실행 파일 크기가 작아서 좋다고 생각합니다. 어떤 아이디어?

답변

1

__bss는 초기화되지 않은 데이터를 저장하는 반면 __data는 수동으로 초기화 된 변수를 저장합니다. 프로그램 로더는 프로그램이로드 될 때 __bss를 초기화해야하며 __data의 변수가 그대로로드되는 동안 약간의 시간이 걸립니다.

+0

__bss 섹션이 실행 파일에 (start_address, length) 쌍으로 기록되어 있고 CPU 지침에 따라 0으로 지워졌다고 가정합니다. 따라서 __DATA의 경우와 같이 2 차 저장소에서 주 메모리로 동일한 바이트 수를로드하는 것보다 시간이 오래 걸리는 이유를 알 수 없습니다. –

관련 문제