char * val;
val = getenv("ENV_VAR_NAME");
anterior es un código para obtener la variable de entorno, ¿provocará una pérdida de memoria si no devuelvo la memoria devuelta por getenv (char *)? Si no, por favor responde por qué?¿Debo liberar/borrar char * devuelto por getenv()?
Sí, en la práctica, si llamo a char * tok = strtok() con su primer parámetro, se devuelve getenv(). The strlen (tok) y puts (tok) no funcionará ... Un resultado bastante cableado. Creo que fue causado por strtok() está cubierto por el texto en negrita. – ackratos
Un poco desactualizado, pero las páginas del manual de linux dicen 'char * getenv()' y no 'const char * getenv()'. Descubrí esto ya que mi máquina no estaba feliz de que yo liberara la cadena. ¿Las páginas man no son completamente correctas? Siempre tuve la impresión de que cuando una fábrica devuelve un 'char * 'uno debería liberarlo.? – hetepeperfan
@hetepeperfan No es solo la página man. El prototipo de función para' getenv' de hecho devuelve 'char *' y no 'const char *'. Tal vez la interfaz es anterior al uso común de 'const', o tal vez es solo un descuido que no fue abordado por mucho tiempo. Estoy de acuerdo en que es engañoso. – jdolan