Logo

¡Bienvenido a Stratos!

Acceder

Foros





Sizeof(struct) Retorna Un Valor Ilógico.

Iniciado por J_F_NASH, 30 de Julio de 2005, 10:03:06 AM

« anterior - próximo »

J_F_NASH

 
#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.

ethernet

 Busca información sobre el factor de empaquetamiento de las estructuras. Ahí está la clave.

fiero

 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
www.videopanoramas.com Videopanoramas 3D player

zupervaca

 
#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