Stratos: Punto de Encuentro de Desarrolladores

¡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






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.