Personnellement, je fais une utilisation très intensives des pointeurs, mais les smart_ptr et autre trucs, jamais. D'ailleurs j'ai jamais vu ce genre de trucs dans des gros projets (genre KDE 4).
A la main : new + delete.
D'ailleurs, pour ton problème, c'est très con :
Code :
- char * maFonction()
- {
- char * retour = new char[255];
- retour[0] = '\0';
- /* traitements... */
- if(retour[0] == '\0')
- {
- delete retour; // Si ça se trouve, c'est seulement ça que valgrind voulait t'indiquer
- return NULL;
- }
- else
- {
- return retour;
- }
- }
- int main(int argc,cahr **argv)
- {
- char *toto = maFonction();
- delete toto; // ça ne pose pas de problème de faire un delete sur un pointeur nul.
- }
|
Et tant qu'à faire, en C++, on n'utilise plus tellement "NULL" qui est un héritage du C, mais directement la valeur 0 (zéro)
Message édité par Dumbledore le 05-12-2007 à 19:32:33