Discussion:
tamaño de las struct foo {...}
(demasiado antiguo para responder)
Angel Suarez Rivero
2004-02-14 21:04:51 UTC
Permalink
Las definiciones de las estructuras ocupan memoria? Vean este programa:

#include <stdio.h>

struct uno {
unsigned char uno;
unsigned short dos;
unsigned int tres;
};


int main(void)
{
struct uno dos;
printf("%d - %d - %d\n", sizeof(dos.uno), sizeof(dos.dos),
sizeof(dos.tres));
printf("%d\n", sizeof(struct uno));
return 0;
}

Cuando yo esperaba que la estructura ocupara 7 bytes resulta que ocupa 8, y
me rompe los esquemas para unos headers de un archivo, es lógico?

Saludos
--
En realidad ese correo lo tengo como vertedero, no mandéis nada ahí. Al
menos que sea publicidad o reclamaciones de facturas sin pagar.

lococ
Miguel
2004-02-14 21:58:34 UTC
Permalink
#pragma pack(push, 1)
Post by Angel Suarez Rivero
struct uno {
unsigned char uno;
unsigned short dos;
unsigned int tres;
};
#pragma pack(pop)

Esto ajustará el alineamiento y hará que el dato encaje con la
especificación. Ante cualquier duda, consulta la documentación de tu
compilador.

Saludos.
--
Miguel.
Angel Suarez Rivero
2004-02-14 22:59:28 UTC
Permalink
Post by Miguel
#pragma pack(push, 1)
Post by Angel Suarez Rivero
struct uno {
unsigned char uno;
unsigned short dos;
unsigned int tres;
};
#pragma pack(pop)
Esto ajustará el alineamiento y hará que el dato encaje con la
especificación. Ante cualquier duda, consulta la documentación de tu
compilador.
Saludos.
ok gracias, la verdad es que si no lo pregunto, por mi mismo no lo hubiese
averiguado en un millón de años, porque no tenia ni idea de esa macro. En
cualquier caso lo solucioné moviendo y compensando el peso de las variables
dentro de las estructuras a un tamaño par. Así al menos si pongo 44 bytes
de headers, pesará 44 y no 48 como antes xDD . Ahora probaré esto que
parece muy interesante. Gracias de nuevo

Saludos
--
En realidad ese correo lo tengo como vertedero, no mandéis nada ahí. Al
menos que sea publicidad o reclamaciones de facturas sin pagar.

lococ
Loading...