내 컴파일 된 (작은) Objective-C 파일의 절반이 큰 0 블록 인 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/146025

  •  02-07-2019
  •  | 
  •  

문제

나는 텍스트 편집기에서 컴파일 된 Hello World OBJ-C 응용 프로그램을 열었고 놀랍게도 약 8 킬로바이트의 00 00 00 00 00 00 00 00 ....

왜 여기에 있습니까? 이 제로를 제거하는 방법이 있습니까? ~도 많은 기능)?

분명히 그것은 그렇게 중요하지 않습니다 이것 파일은 16KB에 불과한 것으로보고 있지만 어쨌든 알고 싶습니다.

도움이 되었습니까?

해결책

코드, 데이터, 재배치 또는 사용하는 실행 파일 형식의 다른 섹션간에 패딩 할 가능성이 높습니다.

링커는 이러한 섹션을 4K 또는 8K 경계로 채우는 것을 좋아합니다. 이것은 약간의 메모리 폐기물 가격의 로딩 시간을 향상시킵니다.

간단한 Hello World의 경우 중요하지만 큰 응용 프로그램의 경우 패딩에 사용되는 추가 메모리가 무시할 수 있습니다.

다른 팁

Objective-C는 증분 연결을 지원합니까? 그것은 왜 많은 패딩 공간이 있었는지 설명 할 것입니다.

일부 컴파일러 또는 링커는 파일 크기에 대해 둥근 번호를 원합니다. 코드를 추가 할 때 파일 크기가 증가하지 않음을 알 수 있습니다. 나는 그것이 당신이보고있는 0이라고 생각합니다.

어쩌면 그것은 정적 변수일까요? 많은 C와 같은 언어로 정적으로 선언 된 변수의 초기 값은 컴파일러가 방출 한 코드에 내장되어 있습니다. 런타임 에이 초기 값은 프로세스 메모리에 매핑됩니다. 아마도 당신 (또는 당신이 포함하거나 연결하는 일부 코드)은 8kb 제로 시작 배열을 정의 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top