Вопрос

Должен ли я освободить память, выделенную для массива 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 возвращает указатель на ваши процессы. Не нужно оформлять, и это, наверное, хорошая идея не. (Удалить и бесплатно, вероятно, достаточно умны, чтобы ничего не делать, но корректируя вашу среду не очень хорошая идея.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top