Désolé de répéter une question qui a été posée à plusieurs reprises, mais je n'ai pas pu trouver une mention spécifique des problèmes de mémoire. Si un processus se termine par _exit (0) ou _Exit (0), son bloc de mémoire peut-il être perdu dans le système d'exploitation? Merci, -nuundangers de _exit() - fuite de mémoire?
Répondre
Pour à peu près n'importe quel consommateur O/S qui n'arrivera pas. Les systèmes d'exploitation multiprocessus modernes libéreront toutes les ressources que le processus aura pu acquérir (mémoire, verrous, fichiers ouverts, etc.) lorsque le processus sera arrêté. Donc, je pense généralement que les fuites de mémoire ou de ressources "ne comptent pas" comme des fuites si je les acquière juste au démarrage (pas pendant l'exécution peut-être à plusieurs reprises).
Cependant, il existe encore beaucoup de plateformes embarquées/en temps réel pour lesquelles ce n'est pas vrai. Si votre programme peut être exécuté sur l'un de ceux-ci, vous devriez être scrupuleux à propos de la libération des ressources acquises. Mais même là, il est souvent plus facile de redémarrer l'appareil après chaque utilisation ...
sur aucune O/S (Unix, Windows, peu importe) moderne décent - l'O/S va récupérer la mémoire du processus lorsque le processus meurt, quel que soit proprement il est mort.
En général, pas. Les systèmes d'exploitation gèrent ce genre de choses pour nous.