Inicializar um array de structs!

Boa noite, estou a fazer um programa o qual necessita de um array com elementos do tipo Filme. Estou a ter um problema em inicializar esse array de Filmes e não consigo perceber o que estou a fazer de errado. Está fora de questão, inicializar o array fazendo, por exemplo, *Filme lista[10]. Eu quero inicializa-lo usando malloc. Percisava que alguém, além de me dizer onde está o meu erro, me explica-se, por favor, o que estou a fazer mal e se possivel de forma a que eu nunca mais tenha um problema do genero, pois é recorrente estes tipo de erro.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct movie{
    int codigo;
    char titulo[50];
    char genero[20];
    char realizador[50];
    int ano;
    int duracao;
} Filme;

int tam = 10;
int nFilmes = 0;

Filme *lista = (Filme*) malloc(tam*sizeof(Filme)); <<<<<<-------O ERRO DÁ AQUI!

//1º Requisito
int addFilme(int code, char* title, char* genere, char* autor, int year, int time){

    if(nFilmes<((tam*75)/100)){
        lista[nFilmes].codigo = code;
        strcpy(lista[nFilmes].titulo,title);
        strcpy(lista[nFilmes].genero,genere);
        strcpy(lista[nFilmes].realizador,autor);
        lista[nFilmes].ano = year;
        lista[nFilmes].duracao = time;
        nFilmes++;
    }else{
        lista = realloc(lista,tam*2);

        if(lista == NULL){
            printf("Ocorreu um erro a alocar memória!\n");
            exit(1);
        }
      
        tam = tam*2;
        lista[nFilmes].codigo = code;
        strcpy(lista[nFilmes].titulo,title);
        strcpy(lista[nFilmes].genero,genere);
        strcpy(lista[nFilmes].realizador,autor);
        lista[nFilmes].ano = year;
        lista[nFilmes].duracao = time;
        nFilmes++;
    }
return 0;
}


void inserirFilme(){
int codigo, ano, duracao;
char titulo[50], realizador[50], genero[20];

    printf("Nome do filme: ");
    scanf("%[^\n]",titulo);
    printf("Genero: ");
    scanf("%[^\n]",genero);
    printf("Realizador: ");
    scanf("%[^\n]",realizador);
    printf("Ano: ");
    scanf("%d",&ano);
    printf("Duração: ");
    scanf("%d",&duracao);

    if(addFilme(codigo, titulo,genero,realizador,ano,duracao) == 0){
        printf("Filme adicionado com sucesso!\n");
    }else{
        printf("Ocorreu um erro na inserção!\n");
    }  
}


//4º Requisito
void listaFilmesRealizadorTempo(char* nome, int tempo){
    printf("Código\tTitulo\t\tRealizador\t\tGenero\t\tAno\t\tDuração\n");

    for(int i=0; i<nFilmes; i++){
        if((strcmp(lista[i].realizador,nome) == 0) && (lista[i].duracao > tempo)){
            printf("Código: %d\n",lista[i].codigo);
            printf("Titulo: %s\n",lista[i].titulo);
            printf("Realizador: %s\n",lista[i].realizador);
            printf("Genero: %s\n",lista[i].genero);
            printf("Ano: %d\n",lista[i].ano);
            printf("Duração: %d\n",lista[i].duracao);      
        }
    }
}


int main(){
char tipo[20];
char realizador[50];
int time;

    inserirFilme();
    inserirFilme();
    inserirFilme();
    printf("Digite o realizador e a duração minima dos filmes a pesquisar!\n");
    printf("Nome do realizador: ");
    scanf("%[^\n]",realizador);
    printf("DUração minima do filme: ");
    scanf("%d",&time);
    listaFilmesRealizadorTempo(realizador, time);

    return 0;
}

O erro que me é devolvido é:

error: initializer element is not constant

Desculpem se o post não se encontra bem formatado.
Aguardo a vossa ajuda o quanto antes, por favor.

Cumprimentos a todos

Olá Rafael.

Caso não tenha conseguido resolver isso ainda, posso estar enganado mas me parece um erro de sintaxe.
Já testou a forma a seguir?

Filme *lista = malloc(sizeof(tam));

Se não funcionar, você pode tentar dar uma olhada melhor na própria documentação da linguagem: Documentação Extraoficial Linguagem C

Abraço!

Você esta tentando inicializar a variável global na declaração dela. Mantêm a declaração ali mas faz a inicialização dentro do main.