char * val;
val = getenv("ENV_VAR_NAME");
выше - код для получения переменной окружения, может ли это вызвать утечку памяти, если я не освобожу память, полученную getenv (char *)? Если нет, то ответьте, почему?Должен ли я освободить/удалить char *, возвращенный getenv()?
Да, на практике, если я вызываю char * tok = strtok(), его первым параметром является return getenv(). Strlen (tok) и puts (tok) tok) не будет работать ... Весьма связанный с проводкой результат. Я думаю, что это вызвано strtok(), покрываемым выделенным жирным шрифтом – ackratos
Немного устаревшим, но страницы man linux говорят 'char * getenv()' а не 'const char * getenv()' .Я обнаружил это, потому что моя машина не была счастлива, когда я освобождал строку. Являются ли страницы man не совсем правильными? Я всегда был под впечатлением, когда fuction возвращает символ 'char * 'должен быть освобожден. ' – hetepeperfan
@hetepeperfan Это не только страница man. Прототип функции для' getenv' действительно возвращает 'char *', а не 'const char *'. Возможно, интерфейс предшествует обычному использованию 'const', или возможно, это просто надзор, который слишком долго не касался. Согласился, что это вводит в заблуждение. – jdolan