我正在使用 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 = %s\n", buf);
free(buf);
}
请注意,您有责任释放返回的缓冲区。
关于c++ - 谁能给我_dupenv_s的示例代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15916695/