[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