Por que é metade do meu arquivo (pequeno) objective-C compilado um grande bloco de zeros?

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu abri minha aplicação Olá Mundo Obj-C compilado em um editor de texto e, para minha surpresa, encontrei cerca de 8 kilobytes de 00 00 00 00 00 00 00 00 ....

Por que são estes aqui? Existe uma maneira de limpar esses zeros (o que duvido têm muito muito função)?

Obviamente não é tão importante em este arquivo, vendo como é apenas 16kB para começar, mas eu gostaria de saber de qualquer maneira.

Foi útil?

Solução

É mais provável preenchimento entre código, dados, transferência ou outras seções do formato executável que você usar.

Linkers como a almofada tais seções em um limite de 4k ou 8k. Isso melhora o tempo de carregamento para o preço de um pouco de memória de resíduos.

Por um mundo simples Olá é significativo, mas para uma grande aplicação a memória extra utilizado para o preenchimento é neglible.

Outras dicas

O suporte Objective-C vinculação incremental? Isso explicaria por que não havia um monte de espaço estofamento.

Alguns compiladores ou ligadores quer algum número redondo para o tamanho do arquivo. Você pode ver que quando você adicionar algum código, mas o tamanho do arquivo não aumenta. Eu acho que é os zeros que você está vendo.

Talvez seja uma variável estática? Eu sei que em muitas linguagens C-like, o valor inicial de uma variável que é declarada como estática está embutido no código emitido pelo compilador. Em tempo de execução deste valor inicial é mapeado para a memória do processo. Talvez você (ou algum código que você está incluindo ou ligando contra) define um 8 KB gama de zero-inicializado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top