Bonjour,
Je viens de me mettre à Boost et aux pointeurs intelligents.
Pour bien comprendre le principe, je le mets en application sur une fonction utilisant mySQL.
Le code d'origine :
le code avec shared_ptr :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <iostream> #include "/opt/mysql/server-5.5/include/mysql.h" using namespace std; main() { MYSQL* ptrSQL = mysql_init(NULL); // Ici du code. mysql_close(ptrSQL); return 0; }
Quelques questions pour parfaire la compréhension :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <iostream> #include "/opt/mysql/server-5.5/include/mysql.h" #include "/usr/include/boost/shared_ptr.hpp" using namespace std; using namespace boost; main() { shared_ptr<MYSQL> ptrSQL; ptrSQL.reset(mysql_init(NULL)); // Ici du code. ptrSQL.reset(); }
- Est-ce judicieux d'utiliser un shared_ptr dans ce cadre là ? Et si non, pourquoi ?
- Est-ce que le .reset() remplace mieux, moins bien, ou pareil le mysql_close() ? (Dans les deux cas le,pointeur redevient NULL.)
- J'aurais eu tendance à laisser le pointeur se supprimer tout seul, est-ce une meilleure solution ?
- Voyez-vous des erreurs ? L'auriez-vous écrit différemment ?
Partager