char * val;
val = getenv("ENV_VAR_NAME");
precedente è un codice per ottenere la variabile di ambiente, causerà la perdita di memoria se non si libera la memoria restituita da getenv (char *)? Se no, per favore rispondi perché?Devo liberare/cancellare il carattere * restituito da getenv()?
Sì, in pratica, se chiamo char * tok = strtok() con il suo primo parametro be return di getenv(). Il strlen (tok) e puts (tok) non funzionerà ... Un risultato abbastanza cablato, penso che sia stato causato da strtok() è coperto dal testo in grassetto – ackratos
Un po 'obsoleto, ma le pagine man di linux dicono 'char * getenv()' e non 'const char * getenv()'. Ho scoperto questo dato che la mia macchina non era contenta di liberare la stringa. Le pagine man non sono completamente corrette? Ero sempre sotto l'impressione quando una fuction restituisce un 'char * 'uno dovrebbe liberarlo.? – hetepeperfan
@hetepeperfan Non è solo la pagina man. Il prototipo di funzione per' getenv' restituisce infatti 'char *' e non 'const char *'. Forse l'interfaccia precede l'uso comune di 'const', o forse è solo una svista che non è stata affrontata troppo a lungo, ma è stato fuorviante. – jdolan