谁能给我_dupenv_s的例子代码

Can anyone give me example code of _dupenv_s?

本文关键字:代码 dupenv      更新时间:2023-10-16

我正在使用getenv("TEMP"),但我得到一个警告,告诉我使用_dupenv_s

我在网上找不到_dupenv_s的例子。

文档显示:

errno_t _dupenv_s(
   char **buffer,
   size_t *numberOfElements,
   const char *varname
);

但是它们指的是什么缓冲区?我只有varname。避免使用缓冲区不是更好吗?

_dupenv_s是一个Microsoft函数,被设计为getenv的一种更安全的形式。

_dupenv_s为自己分配缓冲区;你必须给它传递一个指向另一个指针的指针,它将这个指针设置为新分配的缓冲区的地址。

例如,

char* buf = nullptr;
size_t sz = 0;
if (_dupenv_s(&buf, &sz, "EnvVarName") == 0 && buf != nullptr)
{
    printf("EnvVarName = %sn", buf);
    free(buf);
}

请注意您负责释放返回的缓冲区