Je vois beaucoup de classes d'exemple RAII entourant les handles de fichiers.Utilisation de RAII avec un pointeur de caractères
J'ai essayé d'adapter ces exemples sans chance à un pointeur de caractère.
Une bibliothèque que j'utilise possède des fonctions qui prennent l'adresse d'un pointeur de caractère (déclaré comme get_me_a_string (char ** x)). Ces fonctions allouent de la mémoire pour ce pointeur de caractères et laissent à l'utilisateur final de la bibliothèque le soin de le nettoyer dans son propre code.
Donc, j'ai le code qui ressemble à ceci ...
char* a = NULL;
char* b = NULL;
char* c = NULL;
get_me_a_string(&a);
if(a == NULL){
return;
}
get_me_a_beer(&b);
if(b == NULL){
if(a != NULL){
free(a);
}
return;
}
get_me_something(&c);
if(c == NULL){
if(a != NULL){
free(a);
}
if(b != NULL){
free(b);
}
return;
}
if(a != NULL){
free(a);
}
if(b != NULL){
free(b);
}
if(a != NULL){
free(b);
}
On dirait que RAII est la réponse pour ce gâchis que j'ai ci-dessus. Quelqu'un pourrait-il fournir une simple classe C++ qui enveloppe un char * plutôt qu'un fichier *?
Merci
La plupart des bibliothèques qui allouent la mémoire ont une fonction pour le libérer. (Voir XmStringCreate et XmStringFree). Votre bibliothèque a-t-elle une fonction de désallocation similaire? – Bill
Oui, il a sa propre fonction gratuite, mais c'est à moi de l'appeler. –