Je veux dire par "mécanisme d'héritage" que si le codeur n'a pas besoin de se cogner les delete à la man, c'est parce qu'il y a un ancêtre à son objet qui, dans son destructeur, contient déjà le code qui le fait.
Je voulais surtout signaler que dans le cas de Qt, la libération mémoire se fait par un tout bête "delete object", alors que dans un GC, on doit implémenter des trucs du genre :
... et tout ça en priant pour qu'à aucun moment le codeur n'ai dupliqué une référence, par exemple en oubliant de surcharger un opérateur d'affectation ...
Bref, en raccourci pour faire simple, dans un cas on gère des pointeurs, dans l'autre des handles.
[^] # Re: Comment ça marche ?
Posté par peau chat . En réponse à la dépêche Al Stevens n'aime pas QT. Évalué à 1.
Je veux dire par "mécanisme d'héritage" que si le codeur n'a pas besoin de se cogner les delete à la man, c'est parce qu'il y a un ancêtre à son objet qui, dans son destructeur, contient déjà le code qui le fait.
Je voulais surtout signaler que dans le cas de Qt, la libération mémoire se fait par un tout bête "delete object", alors que dans un GC, on doit implémenter des trucs du genre :
getReference(Object)
{
memList[Object].references++;
return memList[Object].pointer;
}
releaseReference(Object)
{
memList[Object].references--;
if (!memList[Object].reference)
{
delete memList[Object].pointer;
removeObjectFromMemList(Object);
}
}
... et tout ça en priant pour qu'à aucun moment le codeur n'ai dupliqué une référence, par exemple en oubliant de surcharger un opérateur d'affectation ...
Bref, en raccourci pour faire simple, dans un cas on gère des pointeurs, dans l'autre des handles.