Alcance de malloc usado en una función

Cuando vuelve una función, ¿se libera la memoria asignada a través de malloc? ¿O aún se puede acceder a él en la función main () usando punteros?

p.ej.

void function(int *a)
{
    a=(int *)malloc(sizeof(int));
    *a=10;
}
int main()
{
    int *num;
    function(num);
    printf("%d",*num);
    return(0);
}

¿Se puede acceder al entero almacenado en a por main () aquí?

Respuestas a la pregunta(6)

Su respuesta a la pregunta