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.