c++ - 谁能给我_dupenv_s的示例代码?

标签 c++ visual-c++

我正在使用 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/

相关文章:

c++ - 使用 g++ 编译时静态函数的模板特化

c++ - 如何通过 C++ 中的函数将数组的大小作为参数发送?

c++ - 检查内联函数中的变量值

c++ - 在 C++ 中对 vector 进行分组排序

c - setjmp 并省略帧指针

c++ - 可以使用ofstream在打印机上打印

c++ - 你会如何设计一个完美哈希的函数?

C++从函数调用的多个返回构建字符串 vector 的最佳方法

C++:如何实现自己的 String 类?

c++ - 特化静态 constexpr 数据成员