Citation
b
les objets étant plus ou moins desalloués de façon automatique par exemple.
Bof bof, uniquement s'ils sont organisés en graphes orientés acycliques. Dès qu'on y met des cycles, c'est merdique au possible (comme tout système de graphe de référence).
Si on veut en C ou C++ gérer la mémoire automatiquement, je suggère d'utiliser le
ramasse-miettes de Hans Boehm (dont je m'étonne qu'il soit si peu utilisé et connu) -ou peut-être même le
mien (Qish) ou en écrire un (de Garbage Collector) soi-même.
[v]Qish est un vieux code que je ne maintiens plus vraiement[/v]
Alors, Qt gérant la mémoire automatiquement, je rigole... :-)
Il gère simplement la mémoire des objets graphiques (qui effectivement sont organisées en
arborescence, car X11 l'exige) - ce n'est pas du tout pareil, car les cycles sont interdits.
Or les cycles de référence sont pratiques et utiles. Par exemple, c'est usuel entre classes, méta-classes et instances. Ou même l'exemple classique de la liste circulaire lundi -> mardi -> ... -> samedi -> dimanche -> lundi
Les techniques de comptage de références sont hélas archi-classiques dans les toolkits graphiques (et elles sont malheureusement appréciées des codeurs en C++ pour des raisons, liées au langage C++, qu'on devine facilement), mais c'est l'une des plus mauvaises techniques de ramassage des miettes (et c'en est une).
Essaies par exemple d'écrire une JVM ou une LuaVM ou une OcamlVM au dessus du gestionnaire mémoire de QT. Tu m'en diras des nouvelles!
Et d'ailleurs, je ne comprends vraiement pas pourquoi aucune toolkit graphique ne s'appuie sur le GC de Boehm - en pratique, ses performances sont excellentes et suffisantes pour ça.
[v]Il faut évidemment en utiliser les routines de finalisations pour les objets ayant une ressource X11 associée.[/v]
----
Basile STARYNKEVITCH
Membre de l'
APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!
Projet logiciel libre:
RefPerSys