[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]On Sun, 21 Jan 2001 00:19:56 -0600 Miguel Cárdenas <mcmail_y2k en yahoo com> wrote: > Hola todos!!! > > struct ICQHDRv2_CLIENT { > unsigned short version; > unsigned short command; > unsigned short seq_num; > unsigned long uin; > }; > > Alguien me podria explicar porque demonios sizeof(ICQHDRv2_CLIENT ) me > devuelve un 12 !!! hasta donde yo se esta porqueria me debe de dar 10... > > de hecho tengo otras estructuras que por cada unsigned long que utilizo le > agrega 2 bytes mas al sizeof (osea cada long aumenta 6 en vez de 4), aunque el > sizeof del unsigned long me devuelve 4 asi solito... > > QUE PASA!!! El compilador lo tenes configurado para que te alinee las estructuras, o sea: short version -> 2 bytes - empieza en offset 0 short command -> 2 bytes - empieza en offset 2 short seq_num -> 2 bytes - empieza en offset 4 long uin -> 4 bytes - empieza en offset ** 8 ** no en 6! el sizeof te da eso poque el compilador mete 2 bytes no usados entre el seq_num y el uin, para que el uin le quede en el offset 8, multipo de 32bits (4 bytes), esto hace que pueda realizar algunas optimizaciones, no me acuerdo como deshabilitas esto, (man gcc), pero en lo unico que te jode es que tus estructuras van a ser un poco mas grandes en memoria, es una speed versus size optimization. Estas haciendo un icq client? --------------------------------- Nahuel Greco http://www.codelarvs.com.ar Web Development - Open Source Game programming - Research --------------------------------- --------------------------------------------------------- para salir de la lista, enviar un mensaje con las palabras "unsubscribe ayuda" en el cuerpo a majordomo en linux org mx