dmk04
Messages postés206Date d'inscriptionsamedi 29 octobre 2005StatutMembreDernière intervention 7 mars 2012
-
12 juin 2006 à 14:51
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
12 juin 2006 à 18:20
Salut,
Je me demandais un truc sur la gestion de la mémoire. Je ne vois pas trop comment l'expliquer simplement et rapidement, voici donc un peu de code :
#include <stdlib.h>
#include
using namespace std;
char * fonction()
{
char * retour = new char[14];
memset(retour,'\0',14);
memcpy(retour,"un petit test",strlen("un petit test"));
return retour;
}
int main()
{
cout<<strlen(fonction())<<endl;
system("PAUSE");
return 0;
}
Alors, ma question est : l'espace alloué à la chaîne par l'appel de fonction() dans le strlen est-il libéré automatiquement ?
D'habitude, la mémoire pour une chaine est alloué avant la fonction le pointeur est passé en paramètre à la fonction. Mais l'exemple ci-dessus fera pareille. C'est seulement moin propre (car plein de delete sans new, on peut ce perdre dans ça)
___________________________________________
Les plus grands esprits trouvent toujours une solution
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 juin 2006 à 18:20
Tant qu'on y est, autant préciser que c'est très mauvais de faire ca, car en génréal tu oubliera de libérer ta mémoire quand elle est allouée dans une fonction sans y être libérée