Удаление персонала Char возвращена Getenv ()
Вопрос
Должен ли я освободить память, выделенную для массива Char, указатель на который возвращается char * getenv( char * )
функция? И какой путь - C free()
или C + delete []
? Если нет - почему?
Я имею в виду:
char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?
Спасибо.
Решение
Исходные данные хранятся в environ
переменная (которая представляет собой массив CHAR * и содержит все переменные среды со своими значениями), getenv()
только поиск соответствующего имени переменной и возвращает положение его значения из environ
Переменная, поэтому вам не нужно его освободить, в противном случае не определено поведение.
Другие советы
GETENV возвращает указатель на ваши процессы. Не нужно оформлять, и это, наверное, хорошая идея не. (Удалить и бесплатно, вероятно, достаточно умны, чтобы ничего не делать, но корректируя вашу среду не очень хорошая идея.)