C'est ce que j'avais cru comprendre en survolant un peu de documentation. En gros, l'opérateur new renvoie en C++ un raw pointer référençant le tas, et l'idée est de ne jamais utiliser de variable intermédiaire pour ce dernier mais par convention de le passer directement au « constructeur » de smart pointer qui lui sera sur la pile ?
var foobar = std::unique_ptr(new SomeFantasticClass());
(syntaxe sans doute très très approximative)
Le smart pointer est le seul à connaître le raw pointer, et je suppose qu'il libère la mémoire quand foobar sort du scope.
J'ai bon ?
Ça ressemblerait effectivement un peu aux types Box<T> et Rc<T> en Rust (ou Arc<T>, je ne sais pas si shared_ptr est thread-safe ?)
...
...
C'est malin, je vais devoir ajouter C++ à ma liste de langages à tester.
[^] # Re: les anciennes choses..
Posté par Letho . En réponse au journal Ces langages avec lesquels il faut tout réécrire. Évalué à 1. Dernière modification le 04 octobre 2022 à 01:53.
C'est ce que j'avais cru comprendre en survolant un peu de documentation. En gros, l'opérateur
newrenvoie en C++ un raw pointer référençant le tas, et l'idée est de ne jamais utiliser de variable intermédiaire pour ce dernier mais par convention de le passer directement au « constructeur » de smart pointer qui lui sera sur la pile ?var foobar = std::unique_ptr(new SomeFantasticClass());(syntaxe sans doute très très approximative)
Le smart pointer est le seul à connaître le raw pointer, et je suppose qu'il libère la mémoire quand
foobarsort du scope.J'ai bon ?
Ça ressemblerait effectivement un peu aux types
Box<T>etRc<T>en Rust (ouArc<T>, je ne sais pas sishared_ptrest thread-safe ?)...
...
C'est malin, je vais devoir ajouter C++ à ma liste de langages à tester.