Bonjour a tous, voila, je me demandais ce qui se passait lorsque l'on se plante au niveau de la mémoire et qu'il y a une fuite, concrétement. Est ce que maintenant c'est géré par l'OS (j'ai Ubuntu), ou par le compilateur (j'ai GCC) ?
Merci

Bonjour a tous, voila, je me demandais ce qui se passait lorsque l'on se plante au niveau de la mémoire et qu'il y a une fuite, concrétement. Est ce que maintenant c'est géré par l'OS (j'ai Ubuntu), ou par le compilateur (j'ai GCC) ?
Merci

Bonjour,
Personne d'autre (ni l'OS, ni GCC) que le programme lui-même ne peut déterminer qu'une zone particulière est à désallouer lorsque celui-ci est en fonctionnement.
En revanche lorsque le programme s'arrête, les OS modernes recyclent l'ensemble de l'espace mémoire qui a été consommé par le programme.


Dans tous les cas, à chaque redémarrage de l'ordinateur la mémoire vive est totalement vide donc suffit de le redémarrer et voila ! Oublier la fuite !
Oui c'est exact. Chaque octet de mémoire alloué brûle une petite zone de la ram et chaque octet libéré répare la zone brûlée.
Si tu alloues sans libérer ben tu crames ta ram. Quand elle est toute cramée, il n'y a plus qu'à aller acheter de nouvelles barrettes...
PS: arf, la réaction ne s'est pas faite attendre. Déjà "-1" à mon compteur![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]

Salut,
Bah deux choix possible (me semble t-il):
- Ton OS attend la saturation de la mémoire pour ensuite kill le process qui en est à l'origine et libérer l'espace
- Au bout d'un certain temps ton process plante (à la "L'application ne répond plus" sous windows) et il se fait kill
Sinon je ne comprend pas vraiment ta question:
C'est un peu ambigu. Ton compilateur va te permettre de compiler ton code où est située ta fuite (exemple simple: allocation mémoire dans une boucle sans jamais la libérer) et ton OS va 'exécuter' ton process qui utilisera la mémoire nécessaire.Est ce que maintenant c'est géré par l'OS (j'ai Ubuntu), ou par le compilateur (j'ai GCC) ?
Partager