Eliminazione matrice char restituito da getenv ()
Domanda
Qualora possibile liberare la memoria allocata per la matrice char, puntatore che viene restituita dalla funzione char * getenv( char * )
? E quale modo - C o C + free()
delete []
? Se no - perché?
I media:
char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?
Grazie.
Soluzione
I dati originali vengono memorizzati nella variabile environ
(che è un array di char * e contiene tutte le variabili di ambiente con i loro valori), getenv()
cercare solo per il corrispondente nome della variabile e restituisce la posizione del suo valore dalla variabile environ
, in modo da non riuscire a liberare, altrimenti può essere verificato comportamento non definito.
Altri suggerimenti
GETENV restituisce un puntatore al vostro ambiente processi. Non ha bisogno di essere deallocato, ed è probabilmente una buona idea di non farlo. (Eliminazione e la connessione sono probabilmente abbastanza intelligente da non fare nulla, ma corrompere il vostro ambiente non è una buona idea.)