• # C / C++ sont très différents sur ce point

    Posté par . En réponse au journal Encore une histoire de récupérateur de mémoire. Évalué à 5.

    Au niveau de la gestion de la mémoire, C et C++ sont très différents en pratique, même si ils le sont peu en théorie.

    En C, il n'y a que la discipline et les debogueurs pour éviter les fuites.

    En C++, il y a pas mal de possibilité pour avoir une gestion un tant soit peu automatisée. Les destructeurs permettent de libérer la mémoire proprement : le code est centralisé (dans le destructeur donc), et est appelé dans tous les cas nécessaires (y compris remontée d'exception).

    Tout ce qui est pointeur peut être encapsulé dans une classe mère dont le destructeur libèrera automatiquement la ressource en fin de portée. Ce sont des habitudes à prendre, mais on a là une partie des avantages des avantages d'un gc avec un bon contrôle de ce qui se passe.

    Avec boost on a toute un panoplie de pointeurs intelligents (généralisation du point précédent).

    Le pattern singleton a aussi un intérêt dans ce genre de situation :: [[http://fr.wikipedia.org/wiki/Singleton_%28patron_de_concepti(...)]]

    En fait, C++ amène tant de choses pour améliorer l'approche de la gestion de la mémoire qu'en pratique c'est beaucoup plus fiable.