Suppression de tableau de caractères renvoyé par getenv ()
Question
Devrais-je libérer la mémoire allouée pour le tableau de caractères, pointeur renvoyé par la fonction char * getenv( char * )
? Et de quelle manière - C ou C + free()
delete []
? Si aucun - pourquoi
Je veux dire:
char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?
Merci.
La solution
Les données d'origine est stockée dans la variable environ
(qui est un tableau de char * et contient toutes les variables d'environnement avec leurs valeurs), getenv()
seulement rechercher le nom de la variable correspondante, et renvoie la position de la valeur de la variable d'environ
, de sorte que vous n'avez pas à le libérer, sinon un comportement non défini peut être produite.
Autres conseils
getenv renvoie un pointeur sur votre environnement de processus. Il n'a pas besoin d'être désallouée, et il est probablement une bonne idée de ne pas. (Suppression et libre sont probablement assez intelligent pour ne rien faire, mais corrompt votre environnement n'est pas une bonne idée.)