• [^] # Re: la réponse est évidente

    Posté par . En réponse au journal [Trolldi] Le langage plus approprié pour écrire des applications graphiques multiplateformes. Évalué à 1.

    Ton exemple est non représentatif d'objet à longue durée de vie. En C++, dans ce cas, il n'y aurait même pas d'allocation mais un objet local sur stack, qui ne coûte rien en allocation.

    Pfff... Le graphe est supposé être une structure dynamique donc alloué dans le tas. Franchement, un graphe alloué sur la pile, c'est un graphe dont on connait exactement la structure à la compilation, ça limite son intérêt...

    Évidemment dans le cas que tu présentes y'a une fuite mémoire (j'ai pas dit que c'était impossible). Après si tu fous pleins de morceaux de code qui n'ont rien à voir entre eux dans une même méthode... Clairement ici, la boucle infinie n'a pas besoin d'avoir accès au graphe. On en revient au code mal conçu.

    Et même dans le cas hypothétique où tu aurais besoin de nuller une référence, ça reste avantageux en terme de temps de développement par rapport à une gestion manuelle :

    • Pas besoin de concevoir des destructeurs pour Graph et Node
    • Il n'y a que quelques endroits dans ton code ou tu dois nullifier ton graphe (donc équivalent à un delete) et non pas partout (avec le risque d'oublier, de ne pas penser aux exceptions qui pourraient passer etc.)

    Après je vais vraiment arrêter de troller parce qu'on tourne vraiment en rond. Il n'y a vraiment pas à nuller des références en général et le GC désalloue la mémoire non utilisée.