[C con Clase] Cannot convert from 'char *' to 'char []
Gilberto Cuba Ricardo
gilbert en hlg.rimed.cu
Mie Ene 6 13:53:58 CET 2010
Hola Lista,
Bueno, esto es una duda que siempre he tenido, el hecho de utilizar
una función que devuelve un char* y en su lugar lo que estoy
poniendo es una variable de arreglo. Pongo un ejemplo para que esto
se vea mejor. Vamos a suponer que tenemos lo siguiente:
1: char str[20];
2: str = ctime(&now);
Aquí en la línea 2 es donde se presenta el error que tiene por
título el correo, y lo cual me queda bien claro y es que no puede
asignarle el puntero al arreglo de 20 caracters.
Una alternativa que he utilizado en ocasiones es la siguiente:
1: char *str = (char *)malloc(sizeof(char) * 20);
2: str = ctime(&now);
3: ...
4: free(str);
y la cual veo conveniente; pero ustedes se imaginan el hecho de que
esto esté dentro de un ciclo, que esté constantemente en cada
iteración reservando y liberando la memoria, me imagino también que
pensarían y bueno, si siempre es esa cantidad porque no se reserva y
libera fuera del ciclo, lo cual está bien. Pero al respecto sigo
reflexionando, tengo entendido, y que me corrijan si me equivoco,
porque no conozco mucho al respecto, en el primer ejemplo cuando se
compila ya se ha reservado ese espacio de memoria el cual siempre ya
estará utilizable, lo cual no sucede así en el segundo ejemplo y que
se irá reservando y utilizando durante la ejecución, tema que demora
la ejecución de la aplicación.
Espero, tener comentarios al respecto y bueno, tal vez otra
alternativa de solución.
--
Salu2,
Gilbert
Más información sobre la lista de distribución Cconclase