Tamaño de variable entera en bss y segmento de datos.

Estoy usando un programa de prueba para comprender el modelo de memoria C en Linux 6.3 con la versión 2.6.32-279.el6.x86_64 del kernal.

Primero tengo que compilar código debajo,

#include <stdio.h>
int main(void)
{
    static int i = 100; /* Initialized static variable stored in DS*/
    return 0;
}

en el comando de tamaño de ejecución, tengo a continuación,

[root@rachitjain jan14]# size a.out
   text    data     bss     dec     hex filename
   1040     488      16    1544     608 a.out

luego, después de eliminar la inicialización para la variable estática 'i', mi código se convierte en

include <stdio.h>
int main(void)
{
    static int i ;
    return 0;
}

En el tamaño de ejecución después de compilar arriba,

[root@rachitjain jan14]# size a.out
   text    data     bss     dec     hex filename
   1040     484      24    1548     60c a.out

Hay un incremento de 8 bytes en la sección bss pero solo 4 bytes se reducen en la sección de datos. ¿Por qué el tamaño es entero al duplicarse al pasar al segmento bss?

He probado este personaje y también flota, observé el mismo comportamiento.

Respuestas a la pregunta(1)

Su respuesta a la pregunta