• [^] # Re: boxed/unboxed ou expansion

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Encore une couche de rouille avec Rust 0.11. Évalué à 1.

    Bon, du coup je ne comprends toujours pas cette notion.

    En C++, il y a deux natures de variables : les automatiques, les dynamiques. Les variables automatiques sont automatiquement allouées lors de l'exécution du code. En général, ce sont les variables de porté locale, et sont allouées sur la pile :

    void fonction()
    {
     auto int automatic = 5;
    }

    Les variables dynamiques sont elles allouées à l'aide de new (ou malloc, ou mmap, ou équivalent) :

    void fonction()
    {
     auto int * automatic = new int(5);
     delete automatic;
    }

    On remarquera que dans cet exemple, une variable automatique est nécessaire pour contenir l'adresse de l'objet instancié.

    Ensuite tu as std::auto_ptr, std::shared_ptr, std::unique_ptr, boost::scoped_ptr qui permettent de gérer automatiquement la libération de l'objet quand l'objet n'est plus référencé.

    Bref, qu'est-ce qui est « boxé », et en quoi l'objet est en boîte ou non ?