Pregunta

¿Debo liberar la memoria asignada para la matriz de caracteres, puntero a la que es devuelto por la función char * getenv( char * )? Y de qué manera - C o C + free() delete []? Si no - ¿por qué?

Me refiero a:

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

Gracias.

¿Fue útil?

Solución

Los datos originales se almacena en la variable environ (que es una matriz de char * y contiene todas las variables de entorno con sus valores), getenv() única búsqueda para el nombre de la variable correspondiente y devuelve la posición de su valor de la variable environ, por lo que no tiene que liberar, de lo contrario un comportamiento indefinido puede ser producido.

Otros consejos

getenv devuelve un puntero a su entorno de procesos. No tiene por qué ser desasignado, y es probablemente una buena idea para no hacerlo. (Borrado y libre son probablemente lo suficientemente inteligente como para no hacer nada, pero la corrupción de su medio ambiente no es una buena idea.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top