como o tamanho de uma estrutura varia com diferentes tipos de dados

Eu estou usando o sistema operacional Linux 32 bit e o compilador GCC.

Eu tentei com três tipos diferentes de estrutura. na primeira estrutura eu defini apenas umchar variável. tamanho dessa estrutura é 1 que está correto.

na segunda estrutura eu defini apenas umint variável. aqui o tamanho da estrutura está mostrando 4 que também está correto.

mas na terceira estrutura quando eu defini umchar e umint isso significa que o tamanho total deve ser 5, mas a saída está mostrando 8. Alguém pode explicar como uma estrutura é atribuída?

typedef struct struct_size_tag
{
    char c;
    //int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}
Saída: tamanho da estrutura: 1
typedef struct struct_size_tag
{
    //char c;
    int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}
Saída: Tamanho da estrutura: 4
typedef struct struct_size_tag
{
    char c;
    int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}

Saída:

Tamanho da estrutura: 8

questionAnswers(4)

yourAnswerToTheQuestion