[C con Clase] Problema extraño con memoria
Samuel Díaz García
samueldg en arcoscom.com
Mar Mayo 31 17:22:20 CEST 2011
Chico:
¿Qué es el miembro "dato" de tu estructura "NODO"? ¿Un "ELEMENTO" o un
"puntero a ELEMENTO"?
Con eso creo que he respondido.
Salu2
vicente lozano escribió:
> Hola buenas,
>
> Estoy depurando un programa y me da un problema muy raro con la memoria.
>
> Hay una modulo listas.c que gestiona listas de elementos:
>
> typedef void *ELEMENTO;
>
> typedef struct nodo{
> ELEMENTO dato;
> struct nodo *siguiente;
> } NODO, *pNODO;
>
> typedef struct LISTA{
> pNODO primero, ultimo;
> int elementos;
> } LISTA, *pLISTA;
>
>
> En el cual usando la funcion:
>
> /**********************************************************************/
> void crear_unitaria_copiando (pLISTA pL, ELEMENTO e, int tamano)
> /**********************************************************************/
> {
> pL->primero = (pNODO) malloc (sizeof (NODO));
> pL->ultimo = pL->primero;
> pL->primero->dato = (void *) malloc (tamano);
> memcpy (pL->primero->dato, e, tamano);
> pL->primero->siguiente = NULL;
> pL->elementos = 1;
> printf("LISTAS: Creada unitaria. %s->%s\n",e,pL->primero->dato);
> }
>
>
> Me da el siguiente problema:
>
> LISTAS: Creada unitaria. 0->0Sp
>
> Lo que pasamos como "e" es siempre una cadena "0", lo que a bajo nivel
> es -> [0][\0] pero lo que almacena es: [0] **** [\0] siendo * un numero
> aleatorio de caracteres aleatorios.
>
> Lo curioso es que esto solo ocurre en el primer uso de la funcion cuando
> se usan elementos pequeños 1-10 caracteres, y si se usan cadenas mas
> largas ocurre mas veces hasta que se estabiliza y funciona correctamente.
>
> Asumo que es un problema de que esta usando una zona de memoria extraña,
> pero no entiendo porque.
>
> A ver si algun sabio me puede echar una mano, si necesitais mas
> informacion decirmelo que no tengo ningun problema.
>
> Un saludo
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
--
Samuel Díaz García
Director Gerente
ArcosCom Wireless, S.L.U.
CIF: B11828068
c/ Romero Gago, 19
Arcos de la Frontera
11630 - Cadiz
http://www.arcoscom.com
mailto:samueldg en arcoscom.com
msn: samueldg en arcoscom.com
Móvil: 651 93 72 48
Tlfn.: 956 70 13 15
Fax: 956 70 34 83
Más información sobre la lista de distribución Cconclase