Cet exemple est très simple et n'a effectivement pas besoin de GC. Au début je pensait de même mais je me suis rendue compte que je devais détecter lorsque des objets ne sont plus utilisés. J'ai pensé à un système de comptage par référence avant de me rendre compte que je devais mettre en place un système de garbage-collector complet (le comptage de références ne libérant pas les cycles)
par exemple (en suivant ta syntaxe) :
{
int tab[] = {1, 2, 3};
{
int a = 5;
a += 2;
print a; // 7
tab[3] = a;
}
print tab;
}
tu traduirais comme ça ?
MonDico["tab"] = {1, 2, 3};
MonDico["a"] = 5;
MonDico["a"] += 2;
MonDico["a"].print();
MonDico["tab"].append(MonDico["a"]);
MonDico.remove("a");
// Je suppose que je détruit l'objet a ... sinon il ne le sera jamais => fuite mémoire
MonDico["tab"].print();
Et là, c'est bête mais tu avais dans le tableau "tab" une référence vers l'objet "a" que tu as détruit....
Peut être que si je fais un langage fonctionnel pur, je n'aurais pas ce problème (car il me serait impossible de modifier des variables déjà créées) mais ce n'est pas (encore) mon but.
[^] # Re: Je comprends pas...
Posté par Mildred (site web personnel) . En réponse au message garbage colector C++ ?. Évalué à 2.
Cet exemple est très simple et n'a effectivement pas besoin de GC. Au début je pensait de même mais je me suis rendue compte que je devais détecter lorsque des objets ne sont plus utilisés. J'ai pensé à un système de comptage par référence avant de me rendre compte que je devais mettre en place un système de garbage-collector complet (le comptage de références ne libérant pas les cycles)
par exemple (en suivant ta syntaxe) :
{ int tab[] = {1, 2, 3}; { int a = 5; a += 2; print a; // 7 tab[3] = a; } print tab; }tu traduirais comme ça ?
MonDico["tab"] = {1, 2, 3}; MonDico["a"] = 5; MonDico["a"] += 2; MonDico["a"].print(); MonDico["tab"].append(MonDico["a"]); MonDico.remove("a"); // Je suppose que je détruit l'objet a ... sinon il ne le sera jamais => fuite mémoire MonDico["tab"].print();Et là, c'est bête mais tu avais dans le tableau "tab" une référence vers l'objet "a" que tu as détruit....
Peut être que si je fais un langage fonctionnel pur, je n'aurais pas ce problème (car il me serait impossible de modifier des variables déjà créées) mais ce n'est pas (encore) mon but.