Bonjour, bienvenue à nouveau. Ce sera notre dernière mission, notre dernier défi
pour notre section pointeurs.
Dans ce défi, je veux que vous compreniez le
fonctionnement de l'allocation dynamique de mémoire. Vous allez donc avoir besoin de malaxer une chaîne.
Ça va être assez basique.
Mais cela vous permettra de comprendre
tout ce concept d'allocation de mémoire dynamique.
Quels sont les avantages de l'allocation dynamique de mémoire?
Eh bien, cela signifie que vous pouvez allouer suffisamment de mémoire lorsque vous en avez besoin.
Vous n'avez pas à gaspiller de mémoire. Et si vous avez besoin de plus de mémoire, vous pouvez réallouer.
Cette mission va simplement vous amener à utiliser malloc.
Donc, dans ce défi, vous allez écrire un programme qui teste votre compréhension de l'allocation de mémoire dynamique.
Je veux que vous écriviez un programme qui permette à l'utilisateur de saisir une chaîne de texte.
Vous allez donc devoir utiliser scanf. Vous pouvez également utiliser git s, nous
n'en avons pas beaucoup parlé, mais git s ou f git s sur
le flux d'entrée standard vous permettront de lire
une chaîne contenant des espaces. Rappelez-vous, scanf il ne
lira la chaîne que jusqu'à un espace.
Si vous utilisez git s, vous pouvez lire plusieurs chaînes séparées par des espaces, dans les deux
cas c'est bien, scanf ou git s dans les deux cas.
Vous allez demander à l'utilisateur d'entrer une chaîne. Le programme va imprimer le texte
qui a été saisi.
Cela peut sembler très simple, mais la différence ici est que le programme va
utiliser l'allocation de mémoire dynamique.
Vous pouvez également demander à l'utilisateur de saisir la limite de
la chaîne qu'il saisit, puis vous pouvez l'utiliser pour malloc, afin de savoir combien d'octets allouer.
Vous devez créer un pointeur de caractères, uniquement un pointeur de caractères, pas de tableaux de caractères.
Je veux que vous allouiez de la mémoire. N'oubliez pas que lorsque vous créez le
tableau de caractères, la mémoire est automatiquement déjà allouée pour vous en
fonction de la taille
que vous mettez entre crochets. Et encore une fois, un gros inconvénient est que si
vous essayez d'entrer quelque chose de plus grand que ce que vous avez mis dans la taille, vous devez recompiler.
C'est statique. Cette mémoire est allouée au moment de la compilation.
La mémoire dynamique est allouée lorsque vous exécutez le programme.
Vous pouvez ainsi déterminer la quantité de mémoire que vous souhaitez allouer en fonction de ce que l'utilisateur entre.
Encore une fois, demandez à l'utilisateur de saisir un nombre pour le
nombre d'octets que vous souhaitez allouer à la chaîne.
Ensuite, demandez à l'utilisateur de saisir la chaîne.
Et vous devez allouer correctement la mémoire, puis passer ce pointeur de caractère dans scanf
ou git s,
puis afficher simplement le texte qui a été entré.
Et enfin, n'oubliez pas la fonction gratuite très importante.
Vous voulez toujours libérer votre mémoire lorsque vous avez fini
de l'utiliser et vous voulez vous assurer de le faire afin que d'autres
programmes puissent utiliser cette mémoire. La mémoire est une
ressource rare, en particulier sur les programmes en temps réel des
systèmes embarqués, alors ne monopolisez pas la mémoire, libérez-la.
Bonne chance, et je fournirai une solution dans la prochaine conférence. Merci.