[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]> 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... Holas!!! Bueno aqui estoy de nuevo... despues de pasar toda la noche meditando al respecto y probando con diferentes tipos de datos y checando el contenido de diversas estructuras byte por byte en memoria, vi que el problema no es el sizeof sino que realmente ese "amount of memory" es generado!!! Lo que encontre es que el tamaño del bloque de memoria utilizado es multiplo del tamaño de tipo de dato mas grande, por ejemplo, con unsigned long o con float el tamaño del bloque allocated es multiplo de 4, con unsigned short es multiplo de 2, con long long es multiplo de 8 y asi... Por lo cual el tamaño de las estructuras nunca es el que deberia de ser como deberia esperarse... En si mi problema no es que el bloque sea mas grande por 1, 2 o 3 bytes pues solo copio los bytes efectivos y los demas lo ignoro, el problema es que al usar el sizeof para copiar y armar paquetes de acuerdo al protocolo de icq (cuyos datos y offsets no pueden ser alterados) pues todos los offsets son un desmadre y resulta en paquetes que no sirven para nada... Alguna sugerencia para armar mi propio SIZEOF() que me de el tamaño de los datos y no el tamaño de memoria allocated? Please!!! se los agradecere eternamente!!! Saludos! -- Miguel Cárdenas -------------------- mcmail_y2k en yahoo com --------------------------------------------------------- para salir de la lista, enviar un mensaje con las palabras "unsubscribe ayuda" en el cuerpo a majordomo en linux org mx