Por que, no mundo, um monte precisa ter certeza de alocar em alinhamentos de 8 bytes?

5

4 bytes = palavra; 8 bytes = palavra 2x

Então, por que o heap não vai apenas com alinhamento de 4 bytes (porque ele vai pegar uma palavra de cada vez, certo?)

Se formos com alinhamentos de 8 bytes, por que não 12? 16?

    
por Dark Templar 10.10.2011 / 21:46
fonte

2 respostas

7

Arquitetura de eficiência e CPU. Eu me lembro quando os chips Alpha saíram, eles só podiam ler a memória em limites de 32 bits. Se você quisesse ler o byte 3, carregaria um número de 32 bits e depois teria que girar o resultado para isolar o byte desejado. Uma comparação tradicional de string byte-by-byte era bastante ineficiente nessa arquitetura.

Dito isto, não sei o que os processadores modernos fazem. Já faz um tempo desde que eu tive que lidar com isso.

    
por 10.10.2011 / 21:52
fonte
0

Resposta curta é "Não funciona". O alinhamento está associado aos detalhes de implementação do gerenciador de heap, nada mais. Seu gerenciador de heap pode ter um requisito de alinhamento por vários motivos, como eficiência, arquitetura, capricho do gravador ou o que quer que seja. Se você tem um motivo para cuidar, por favor, compartilhe conosco.

BTW:

4-bytes = word 8-bytes = 2x word

Esta é uma suposição, está incorreta e levou a muitos problemas de portabilidade de software variados, às vezes caros e sempre indesculpáveis. O tamanho de uma palavra depende da arquitetura de hardware, sistema operacional, linguagem e compilador que estão sendo usados.

    
por 10.10.2011 / 22:49
fonte

Tags