[C con Clase] Problema extraño con memoria

vicente lozano vicentelozano en gmail.com
Mie Jun 1 21:58:11 CEST 2011


Bingo!

Muchas gracias tio, pensaba que strlen incluia ese caracter en la cuenta.

Una cosa que no entiendo es porque en el 95% de los casos si que funcionaba,
misterios de la vida supongo jejej.

Un saludo

2011/6/1 Salvador Pozo <salvador en conclase.net>

> El pasado 2011-05-31 11:28:03, Vicente escribió:
>
> V> Hola buenas,
> V> Estoy depurando un programa y me da un problema muy raro con la memoria.
> V> Hay una modulo listas.c que gestiona listas de elementos:
>
> Hola:
>
> A mi me funciona, añadiendo este código para probar:
>
> ----8<------
> int main() {
>    ELEMENTO e;
>    LISTA lista;
>
>    e = malloc(2);
>    strcpy((char*)e, "0");
>
>    crear_unitaria_copiando(&lista, e, 2);
>
>    cout << "Hello world!" << endl;
>    return 0;
> }
> ----8<------
>
> Por lo tanto, sospecho que el error no está en el fragmento de código que
> adjuntas, sino en el que falta.
>
> Casi con total seguridad, el fallo está el definir el tamaño. Recuerda que
> tienes que añadir un espacio adicional para el carácter nulo terminador. Por
> eso, para una cadena de un carácter, como "0", se debe indicar un tamaño de
> 2.
>
> Si en este mismo código usas 1, o el valor de strlen(), se produce el fallo
> que comentas, porque en tu función no se copia el nulo terminador, y al
> mostrar la cadena, se siguen imprimiendo caracteres hasta que por casualidad
> aparece un nulo.
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> _______________________________________________
> 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/463d4461/attachment-0001.html>


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