1
resposta

Dúvida Sobre o tamanho da memória dinâmica alocada

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.

1 resposta

Olá, Fábio. Tudo bom?

Experimente fazer este mesmo for, dando free em todos os mallocs realizados em cada um dos índices de mapa e depois, ao sair do for, dê um free no mapa. Após isso, execute o seu programa utilizando o valgrind : valgrind --leak-check=full ./a.out

Verifique se aparece algum erro. Faça os testes tanto usando o '\n' no final, quanto sem usar.