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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top