Olá.
Sobre este trecho do código:
//--Alocação dinâmica de memória-----------------------
    mapa = malloc(sizeof(char*) * linhas);
    for (int i = 0; i < linhas; i++){
        mapa[i] = malloc(sizeof(char) * (colunas+1));
    }
    //-----------------------------------------------------No vídeo é explicado que o colunas+1 é para considerar o \n. O \n não é apenas uma sinalização para que o fscanf pare de ler a linha? Assim, o \n em teoria nunca seria armazenado na variável destino.
Testei o código sem somar 1 à variável coluna, e ele compilou e rodou corretamente.
 
            