Título: Tamaño de estructura varia con el orden de sus miembros Publicado por: SebaC en 7 Junio 2016, 22:47 pm No entiedo porque el siguiente codigo imprime dos tamaños diferentes si ambos contienen la misma catidad de dato y de igual tipo
Código
Alguna idea de porque esta salida; el tamaño correcto no seria 6 bytes :huh: Título: Re: Tamaño de estructura varia con el orden de sus miembros Publicado por: AlbertoBSD en 7 Junio 2016, 23:38 pm Depende del compilador y banderas de compilacion asi como de la arquitectura.
Te puedo decir que el sistema por cuestion de alineamiento, en tu caso reservo en bloques de 4 bytes por variable, Primer caso el de A 4 bytes para el primer char, 4 bytes para el int y otro 4 para el ultimo. Ahora el cado de B, 4 bytes para los primeros 2 char y 4 bytes mas para el int. al paracer le es más fácil acceder a un dato int en bloques de memoria divisibles por 4 pero habria que ver como trabaja el compilador internente para hacer eso. Y si el tamaño optimo es 6 bytes Saludos Título: Re: Tamaño de estructura varia con el orden de sus miembros Publicado por: geeke en 8 Junio 2016, 00:24 am Los compiladores alinean automaticamente los datos, insertando bytes de relleno para asegurar que cada miembro este alineado correctamente para un acceso mas rapido a ellos.
Código
Una instancia de una estructura tendra la alineacion de su miembre de mayor número bytes. Puedes evitar la alineación usando la directiva #pragma pack(1) pero no es recomendable porque podría tener un severo impacto en el rendimiento |