Удаление массива char, возвращаемого getenv () - PullRequest
5 голосов
/ 14 августа 2010

Должен ли я освободить память, выделенную для массива char, указатель на который возвращается функцией char * getenv( char * )? И в какую сторону - C free() или C + delete []? Если нет - почему?

Я имею в виду:

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

Спасибо.

Ответы [ 2 ]

5 голосов
/ 14 августа 2010

Исходные данные хранятся в переменной environ (которая является массивом char * и содержит все переменные окружения со своими значениями), getenv() только ищет соответствующее имя переменной и возвращает позицию ее значения изпеременная environ, поэтому вам не нужно ее освобождать, иначе может произойти неопределенное поведение.

4 голосов
/ 14 августа 2010

Getenv возвращает указатель на вашу среду процессов.Это не должно быть освобождено, и это, вероятно, хорошая идея, чтобы не делать этого.(удалить и удалить, вероятно, достаточно умен, чтобы ничего не делать, но испортить вашу среду не очень хорошая идея.)

...