Hola foreros!! Subo aqui un problema que tengo en un programa que estoy haciendo (no se si puede hacerse lo que quiero, hasta el momento no pude). El tema es el sig. desde una funcion llamo a otra que dentro declara un array estatico de punteros y muestre el dato relacionado con la posicion que le estoy pasando, el por que de declararlo estatico es para que no lo tenga que crear cada vez q vuelvo a entrar ya que la necesito en un bucle. Ahora quiero borrar el array estatico de la memoria ya q una vez salido del bucle no lo necesito mas, por eso devuelvo la direccion del array, pero cuando uso free() con la direccion de memoria devuelta en la funcion llamadora me tira error de memoria y aborta el programa. Repito, no se si se puede hacer lo que pretendo, por eso queria consultarlo con uds. Dejo aqui un ejemplo de lo que estoy tratando de lograr (No es el programa que estoy haciendo). Espero rtas y Gracias!! :)
void funcion1()
{
int i;
void *ptr = NULL;
for (i = 0; i < 5; i++){
if (ptr == NULL)
ptr = funcion2(i);
else
funcion2(i);
}
free(ptr);
}
void *funcion2(int par)
{
static char *str[] = {
"UNO",
"DOS",
"TRES",
"CUATRO",
"CINCO"
};
printf("%s\n", str[par]);
return &str;
}
Nunca se libera algo que no se reserva (sin malloc no hay free).
cherto,
aunque al menos está bien que haya puesto el array con static para que conserve la dirección (no sea redeclarado en cada call) y no ser destruído (liberado) automáticamente por estar en el stack frame de la función2
aahhh ok, pero si se reserva la memoria con malloc se puede liberar en otra funcion devolviendo la direccion??
Si.
Gracias x las rtas!! :D
De nadas ::)