ExpertiDict

C · Avançado · Português · Técnico

padding de struct

/ˈpɛ.dĩ dʒi isˈtɾʌkt/substantivo

Bytes vazios que o compilador insere entre campos de uma struct para respeitar o alinhamento de cada um. Por isso sizeof da struct pode ser maior que a soma dos campos.

Onde usar

Reordenar os campos do maior para o menor costuma reduzir o tamanho da struct. Importa em estruturas com milhões de instâncias e em formatos binários gravados em disco.

Em código

struct ruim { char a; int b; char c; };
struct bom  { int b; char a; char c; };
// tipicamente: sizeof ruim = 12, bom = 8

Exemplos

Reordenei os campos e o padding de struct caiu pela metade.

O sizeof deu 12 por causa do padding de struct.

Cuidado

Gravar uma struct inteira com fwrite, pois o padding vai junto e o arquivo deixa de ser portável entre plataformas.

Sinônimos

preenchimento

Veja também

Todos os termos de C