Open lauracorssac opened 6 years ago
Também estava com essa dúvida, mas fazendo uns testes fiquei com mais dúvidas ainda, acho que a resposta de ambas estão erradas, ou eu não entendi. Se a seguinte estrutura ocupa 32 bytes
struct element {
char name[5];
char sobre[3];
int atomic_number;
double atomic_weight;
char c;
};
Por que trocar atomic_weight
por int faz ela ocupar 20 bytes?
https://stackoverflow.com/a/2749096
Eu achei essa resposta que tenta explicar como funciona a ocupação de structs em C, porém, se tu ler um pouco mais a respeito, tu descobre que tudo depende.
Depende do sistema, da arquitetura e do compilador. O compilador tem a liberdade que ele quiser pra implementar isso, a única restrição é que a ordem das variáveis tem que ser mantida.
@lanahra Obrigado pelo link; a forma como é feito o endereçamento e organização da estrutura em memória parece depender da implementação da linguagem (compilador).
Oi, professor e colegas! Não entendi porque a estrutura Chave ocupa 16 bytes e não 24. Para mim seria:
Nome | Nome | Nome | Nome | Nome | Nome | Nome | Nome | Nome | lixo | c. | lixo | k | lixo | lixo | lixo | x | x | x | x | lixo | lixo | lixo | lixo |