A memória do computador é geralmente alinhado a um limite de tamanho igual ao tamanho da palavra do sistema. Em um sistema hipotético de 32 bits , imagine que este tamanho da palavra é de quatro bytes. Na linguagem C , você pode criar estruturas que armazenam dados . A fim de alinhá-los para o tamanho da palavra , o compilador C pode adicionar preenchimento para a estrutura. Você pode remover esse preenchimento por meio de um pré-processador diretiva que diz-lhe para alinhar os dados de forma diferente. Coisas que você precisa
C Ambiente de Desenvolvimento Integrado , como o Eclipse CDT
C Compiler, tal GCC
Show Mais instruções
1
Carregue o C IDE clicando no ícone do programa. Quando se abre , selecione " File /New /Project " e escolha " C Project" para criar um novo projeto C . Um arquivo de código fonte em branco aparece na parte de editor de texto do IDE.
2
Criar um " struct " com o nome " A" com o alinhamento de memória padrão . Escreva a seguinte declaração no topo do arquivo de código fonte:
struct { } A;
3
Adicione alguns membros de dados para a estrutura " A. " Ao misturar inteiros e tipos de caracteres , você está garantindo que o compilador almofadas da estrutura. Em um sistema de 32 bits , os dois primeiros tipos de dados int cada ocupam quatro bytes de memória e estão perfeitamente alinhados como está. No entanto, os dois tipos de dados de char cada ocupar um único byte , e, juntos, ocupam dois bytes de dados . A vontade pad compilador isso com dois bytes de dados de lixo para alinhar os dados corretamente. Adicione as seguintes instruções para struct "A" , colocando-os entre as chaves após a palavra
int a " struct ". ;
Int b;
char a ;
caractere b;
4
Criar um pré-processador diretiva que diz que para alinhar o limite de 1 byte , e não o limite de 4 bytes :
# pragma pacote (push , 1)
5
Crie outra struct , este chamado " B ", e colocá-lo imediatamente após a diretiva de pré-processamento escrito na etapa anterior .
struct { } B;
6
Preencha struct "B" com os mesmos tipos de dados como struct "A", escrevendo as seguintes declarações dentro das chaves de struct " B. " Esses tipos de dados vai alinhar com o byte mais próximo, que passa a ser de 10 ( quatro para cada int, um para cada char) . Não haverá preenchimento nessa estrutura
int a; .
Int b;
char a ;
caractere b;
< br > 7
Reajuste o alinhamento de volta ao seu padrão , escrevendo a seguinte declaração :
# pragma pack (pop)