• [^] # Re: templates variadiques

    Posté par . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 3.

    Sauf que le pointeur qui est gérer par cette allocation n'est pas sur la pile lui. (sinon il n'y aurait pas besoin d'un smart-pointer)

    Donc pour recentrer la discution sur le point de départ une fois de plus : ma remarques de départ indiquait juste qu'un smart pointer et un GC interviennent de la même façon au moment ou l'objet deviens managé.

    Que les données servant à ce que la mémoire soit manager soit sur la pile, dans le tas, ou sur mars, ne change rien au fait qu'ils ont le même comportement, contrairement à ce que disait LupusMic.

    Je pense que la confusion viens justement de ce problème de mémoire et d'allocation. Il faut bien séparer deux chose ici : la mémoire pointée et la coquille. Les deux doivent être alloué pour que tout ce passe bien.
    Dans le cas du smart pointer, la mémoire pointé est alloué par l'utilisateur, et la coquille implicitement par la classe smart pointer.
    Dans le cas du GC, c'est la même chose : le compilateur alloue la mémoire pour l'objet demandé par l'utilisateur et ensuite informe le GC de cette zone de mémoire pour qu'il mette en place sa coquille autour.

    Dans le cas du smart pointer, le compilateur est en général suffisament intelligent pour supprimer l'indirection de pointeur et juste alloué un compteur sur la pile ou le tas suivant le type de smart pointer.

    Dans le cas du GC, vu que les chose sont plus complexe, on prévoit le coup avant et on bouge les infos du GC directement dans l'objet. Mais, ce n'est pas le GC qui va alloué la mémoire pointée.

    Si on veut simplifier, dans les deux cas l'utilisateur fait l'appel à malloc (pour ces données) et demande au GC de ce charger de l'appel à free.