#include <stdio.h>
#include <stdlib.h>
struct _pepe{
int b;
}pepe;
int main(){
printf("%i\n", sizeof(pepe));
}
El resultado es : 4
#include <stdio.h>
#include <stdlib.h>
struct _pepe{
int b;
[B]char c;[/B]
}pepe;
int main(){
printf("%i\n", sizeof(pepe));
}
El resultado es : 8
Pero 4 +1 ¿no son 5?
¿Qué está ocurriendo aquí?
S2.
Busca información sobre el factor de empaquetamiento de las estructuras. Ahí está la clave.
En Visual C++ 6, por ejemplo está en Project->Settings->C/C++->Code Generation->Struct member alignment.
Estas cosas las hace el compilador porque es más rápido acceder a la memoria en posiciones multiplo de 32 bits, y porque así también puede utilizar siempre accesos de 32 bits incluso para acceder al último dato de la estructura.
un saludo
#include <stdio.h>
#include <stdlib.h>
#pragma pack(1)
struct _pepe{
int b;
[B]char c;[/B]
}pepe;
#pragma pack(4)
int main(){
printf("%i\n", sizeof(pepe));
}
asi tiene que darte el valor correcto