Может ли кто-нибудь дать мне пример кода dupenv s?
Я использую getenv("TEMP")
, но я получаю предупреждение, говорящее мне использовать _dupenv_s
.
Я не могу найти пример _dupenv_s в сети.
документы читать:
errno_t _dupenv_s(
char **buffer,
size_t *numberOfElements,
const char *varname
);
но какой буфер они имеют в виду? У меня есть только varname. Не лучше ли избегать использования буфера?
1 ответов
_dupenv_s
- это функция Microsoft, разработанная как более безопасная форма getenv
.
_dupenv_s
выделяет сам буфер; вы должны передать ему указатель на указатель, и он устанавливает это в адрес вновь выделенного буфера.
например,
char* buf = nullptr;
size_t sz = 0;
if (_dupenv_s(&buf, &sz, "EnvVarName") == 0 && buf != nullptr)
{
printf("EnvVarName = %s\n", buf);
free(buf);
}
обратите внимание, что вы несете ответственность за освобождение возвращенного буфера.