Dans de nombreux livres et tutoriels, j'ai entendu parler de la gestion de la mémoire et de certaines pratiques mystérieuses et terribles si je ne libérais pas la mémoire après l'avoir utilisée.
Je ne peux pas parler pour d’autres systèmes (même s’il est raisonnable de supposer qu’ils adoptent une pratique similaire), mais au moins sous Windows, le noyau est en principe garanti de nettoyer la plupart des ressources (à l’exception d’un petit nombre impair) utilisées par un programme après la fin du programme. Qui comprend la mémoire de tas, entre autres choses.
Je comprends pourquoi vous voudriez fermer un fichier après l’avoir utilisé pour le mettre à la disposition de l’utilisateur ou pourquoi vous voudriez déconnecter un socket connecté à un serveur afin de gagner de la bande passante, mais cela semble ridicule. avoir à gérer tout votre mémoire utilisée par votre programme.
Maintenant, je suis d' accord que cette question est large depuis la façon dont vous devez gérer votre mémoire est basée sur la quantité de mémoire dont vous avez besoin et quand vous en avez besoin, je vais donc limiter la portée de cette question à ceci: Si je dois utiliser un morceau de mémoire tout au long de la vie de mon programme, est-il vraiment nécessaire de le libérer juste avant la fin du programme?
Edit: La question suggérée comme un doublon était spécifique à la famille de systèmes d'exploitation Unix. Sa première réponse spécifiait même un outil spécifique à Linux (par exemple, Valgrind). Cette question vise à couvrir la plupart des systèmes d'exploitation "normaux" non intégrés et explique pourquoi il est recommandé ou non de libérer de la mémoire si nécessaire tout au long de la vie d'un programme.