/ / c ++ fuite de mémoire et mémoire de mémoire - c ++, gestion de la mémoire, fuites de mémoire

fuite de mémoire c ++ et mémoire de mémoire - c ++, gestion de la mémoire, fuites de mémoire

Je peux voir que si nous allouons la mémoire dynamiquementdans c ++, mais ne le gérez pas correctement, nous pouvons avoir de la mémoire, et nous pouvons essentiellement obtenir une fuite de mémoire, et il est clair que cela se produit. Parce que si, par exemple, nous avons un pointeur qui pointe vers une adresse mémoire, et que nous affectons ce pointeur à un autre espace d'adressage avant de libérer l'adresse actuelle, il s'agit d'un problème. Mais ce que je ne comprends pas, c'est que nous disons que nous avons un mauvais programme qui continue à ajouter de la mémoire, mais comment tout redevient normal lorsque nous fermons le programme. Si, par exemple, nous avons une mémoire de mémoire qui a été introduite avec un programme c ++, il n'y a plus de pointeur qui pointe vers cette mémoire, et comment se fait-il après la fermeture du programme? Comment le programme sait-il comment nettoyer la mémoire de mémoire avant la fermeture du programme?

Réponses:

3 pour la réponse № 1

Il n'y a pas de mémoire de mémoire, n'est pas votre programmequi alloue et libère de la mémoire. C'est le os sous-jacent. Vous travaillez sur un os, en utilisant ses services. La mémoire de tas et le free store ne sont qu'une abstraction que ces services fournissent (entre autres abstractions de tels fichiers, "je suis le seul processus fonctionnant dans ce CPU unique", etc.)


1 pour la réponse № 2

Sous Windows, le système d'exploitation nettoie toute mémoire allouée par un processus. Donc, en gros, on jette l’espace qui a été donné à un processus sans se soucier de ce qu’il contenait.