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.

Était-ce utile?

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.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top