[C con Clase] Archivos binarios vs archivos de texto

hectorfh en gmail.com hectorfh en gmail.com
Sab Abr 7 06:20:09 CEST 2007


Hola Javier:

> Como que cambiaba la alineación ??? explicate....

Claro. Por ejemplo si tienes la siguiente estructura:

struct xxx {
  char a;
  int b;
};

Si sumas (sizeof (char) + sizeof (int)) en mi máquina te da "5". Sin
embargo si haces un "sizeof (struct xxx)" te da 8.

La razón es que el compilador optimiza de modo que los campos "a" y
"b" se alojen en posiciones de memoria que sean múltiplos de cuatro.
Esto se debe a que mi máquina puede acceder más rápido a estas
posiciones (cuestión de arquitectura).
Por lo tanto, siendo que el campo "a" ocupa sólo un byte, debe
rellenar con tres bytes más que no sirven para nada.

Espero haberte aclarado la duda.

Y ya que estoy le respondo a Programante...

> __attribute__ ((packed)) /  #pragma push(pack)

Este tipo de directivas que mencionas, si no me equivoco, son
particulares de un compilador, pero no son estándares de C.

Saludos




Más información sobre la lista de distribución Cconclase