Tetdoss a écrit :Parfait, merci tout le monde, je me posais la question car j'ai programmé plusieurs mois en C++ et il fallait toujours penser à libérer la mémoire avec les delete ! Les auteurs de tutoriels insistent en plus !
Ce que je ne comprends toujours pas car lorsque je regarde les performances du PC, avec ou sans delete, après la fermeture du programme, il y a toujours autant de mémoire vive libre.
Houlà, ce n'est pas pour la même raison, du tout. Quand on delete un _objet_ d'un langage OO, on invoque sa méthode delete, ce qui peut représenter un travail monstre, comme par exemple créer un fichier et écrire dedans deux tonnes d'infos vitales, imprimer la page de total d'un journal des ventes, mettre à jour une base de données, arrêter proprement une machine-outil, lancer un service, etc.
Tout ce travail doit être effectué dans un ordre bien précis qui correspond à une logique de fonctionnement que l'OS ne peut deviner et où il ne peut mettre ses gros sabots. Deleter un objet c'est donc invoquer une méthode éventuellement très complexe, puis libérer les ressources utilisées, ce qui peut signifier deleter des objets en cascade, etc. L'OS ne sait rien de tout ça : il déglingue tous les _blocs_ de mémoire alloués sans s'occuper de leur contenu et fait pareil pour les ressources, brutalement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.