Olá, seja bem-vindo de volta. Esta será nossa última tarefa, nosso último desafio
para nossa seção de ponteiros.
Neste desafio, quero que você entenda como funciona
a alocação dinâmica de memória. Então você vai precisar malhar uma corda.
Vai ser bem básico.
Mas ajudará você a entender todo
o conceito de alocação dinâmica de memória.
Quais são as vantagens da alocação dinâmica de memória?
Bem, isso significa que você pode alocar memória suficiente quando precisar.
Você não precisa desperdiçar memória. E se você precisar de mais memória, pode realocar.
Esta tarefa apenas fará com que você use malloc.
Portanto, neste desafio, você vai escrever um programa que testa sua compreensão da alocação dinâmica de memória.
Quero que você escreva um programa que permita ao usuário inserir uma string de texto.
Então você vai precisar usar o scanf. Você também pode usar git s, não
falamos muito sobre isso, mas git s ou f git s no fluxo
de entrada padrão permitirá que você leia uma
string que contém espaços. Lembre-se, scanf só
vai ler a string até um espaço.
Se você usa git s, pode ler várias strings separadas por espaços, mas de qualquer
maneira é bom, scanf ou git s de qualquer maneira.
Você vai fazer com que o usuário insira uma string. O programa irá imprimir o
texto que foi inserido.
Isso pode parecer muito fácil, mas a diferença aqui é que o programa vai utilizar
a alocação dinâmica de memória.
Você também pode fazer com que o usuário insira o limite da
string que está inserindo e, em seguida, você pode usar isso para malloc, para saber quantos bytes alocar.
Você deve criar um ponteiro de caractere, apenas um ponteiro de caractere, sem matrizes de caracteres.
Eu quero que você aloque memória. Lembre-se, quando você cria a matriz
de caracteres, a memória já é automaticamente alocada para você com
base no tamanho que
você colocou entre os colchetes. E, novamente, uma grande desvantagem disso agora é que
se você tentar inserir algo maior do que o que você colocou no tamanho, você terá que recompilar.
É estático. Essa memória é alocada em tempo de compilação.
A memória dinâmica é alocada quando você está executando o programa.
E assim você pode determinar a quantidade de memória que deseja alocar com base no que o usuário insere.
Então, novamente, peça ao usuário para inserir um número para o número
de bytes que você deseja alocar para a string.
Em seguida, peça ao usuário para inserir a string.
E você tem que alocar memória corretamente e então passar aquele ponteiro de caractere para
scanf ou git
se então basicamente apenas exibir o texto que foi inserido.
E, por último, não se esqueça da importante função gratuita.
Você sempre deseja liberar sua memória quando terminar
de usá-lo e deseja certificar-se de fazer isso para que
outros programas possam utilizá-la. A memória é um
recurso escasso, especialmente em programas de tempo real de sistemas
embarcados, portanto, não monopolize a memória, libere-a.
Boa sorte, e irei fornecer uma solução na próxima aula. Obrigada.