[C con Clase] Problema extraño con memoria

vicente lozano vicentelozano en gmail.com
Mie Jun 1 11:23:07 CEST 2011


Falsa alarma, se han arreglado otros errores, pero este sigue ahi.

2011/6/1 vicente lozano <vicentelozano en gmail.com>

> Joder, solucionado.
>
> En el modulo listas.c faltaba #include <stdlib.h>.... me encantan los
> modulos que nos dan para trabajar sobre ellos.....
>
> Gracias a todos, un saludo!
>
>
> 2011/5/31 vicente lozano <vicentelozano en gmail.com>
>
>> Hola Samuel,
>>
>>  En primer lugar, muchas gracias por responder.
>>
>>  Es un ELEMENTO, pero ELEMENTO es un puntero generico (typedef void
>> *ELEMENTO;) de ahi el casting en el malloc (= (void *) malloc (tamano)).
>>
>>  Creo que te referias a que si fuera un "no puntero" no tendria sentido el
>> malloc, pero como ves en este caso no es asi, si no lo decias por eso, yo
>> sigo sin ver el problema.
>>
>>  Por cierto, en el caso que da el error, ELEMENTO son cadenas, es decir se
>> llamaria a la funcion:
>>
>>   LISTA miLista;
>>   char* miCadena="0";
>>
>>   crear_unitaria_copiando (&miLista, miCadena,
>> strlen(miCadena)*sizeof(char));
>>
>> Un saludo
>>
>>
>> 2011/5/31 Samuel Díaz García <samueldg en arcoscom.com>
>>
>>> 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
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110601/332067b8/attachment.html>


Más información sobre la lista de distribución Cconclase