[C con Clase] Cannot convert from 'char *' to 'char []

David Fire ddfire en gmail.com
Mie Ene 6 15:23:22 CET 2010


hola
la funcion ctime devuelve un puntero a una cadena, la funcion ya se ocupa de
reservar el espacio.
lo unico que estas haciendo al reservar el espacio por tu cuenta es
desperdisiarlo.

vos reservas 20 bytes, la funcion reserva otros 20 y le asigna a tu puntero
los 20 que reservo.
tus 20 quedan sin usarse.
si podes hacer un free cuando no lo necesites mas.
David


El 6 de enero de 2010 09:53, Gilberto Cuba Ricardo
<gilbert en hlg.rimed.cu>escribió:

> 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
>
>
> _______________________________________________
> 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
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100106/3643168e/attachment.html>


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