Frage

Soll ich die für den char-Array zugewiesenen Speicher freizugeben, Zeiger, auf die durch die char * getenv( char * ) Funktion zurückgegeben wird? Und die Art und Weise - C free() oder C + delete []? Wenn nein - warum?

I Mittel:

char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?

Danke.

War es hilfreich?

Lösung

Die Originaldaten werden in der environ Variable gespeichert (das ist ein Array von char * und enthalten alle Umgebungsvariablen mit ihren Werten), getenv() nur für die entsprechenden Variablennamen suchen und gibt die Position seines Wertes aus der environ Variable, so dass Sie nicht davon zu befreien, sonst nicht definiertes Verhalten aufgetreten sein kann.

Andere Tipps

GETENV gibt einen Zeiger auf Ihre Prozesse Umgebung. Es ist nicht zu ausgeplant müssen, und es ist wahrscheinlich eine gute Idee nicht zu. (Lösch- und frei ist wahrscheinlich klug genug, nichts zu tun, aber Ihre Umgebung korrumpiert ist keine gute Idee.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top