Est-ce judicieux d'utiliser un shared_ptr dans ce cadre là ? Et si non, pourquoi ?
Dans ce cas, c'est effectivement plus intéressant d'utiliser un shared_ptr, quoique, en fonction de ce que tu fais avec ce shared_ptr, un unique_ptr pourrait être suffisant.
Est-ce que le .reset() remplace mieux, moins bien, ou pareil le mysql_close() ? (Dans les deux cas le,pointeur redevient NULL.)
Tu enlèves tout l’intérêt en appelant reset à la fin. Ça ne sert à rien, de plus si à un moment ou un autre ton code génère une exception, reset ne sera pas appelé. Utiliser reset revient à utiliser delete et tu ne profites pas du RAII.
J'aurais eu tendance à laisser le pointeur se supprimer tout seul, est-ce une meilleure solution ?
Oui c'est le but.
Voyez-vous des erreurs ? L'auriez-vous écrit différemment ?
Peut-être avec un unique_ptr si le pointeur ne quitte pas la fonction. Sinon j'encapsulerais le tout dans une classe
Et j'aurais écrit (au lieu d'utiliser reset) :
shared_ptr<MYSQL> ptrSQL(mysql_init(NULL));
Partager