Sé que deberíamos liberar cualquier variable asignada con malloc, pero ¿qué ocurre si la devuelvo en una función? Algo como esto:Devolver una variable asignada
char *somefunction(int somearg){
char *str;
str=(char *)malloc(sizeof(char *));
//some code
return str;
}
¿Debo liberar str? ¿Cómo podría hacer eso?
El argumento de 'malloc()' es casi seguro incorrecto: asigna suficiente memoria para almacenar un 'char *', pero asigna un puntero que apunta a 'char' (y no hay necesidad de lanzar el retorno valor de 'malloc' en C, tampoco). 'str = malloc (N * sizeof * str);' es una mejor manera de escribir eso. – caf
Como dijo CAF, nunca debe arrojar el valor de retorno de malloc(). Ver http://stackoverflow.com/questions/1565496/specifically-whats-dangerous-about-casting-the-result-of-malloc et al – Mawg