ein*_*ica 5 crt compiler-warnings visual-c++ getenv c-standard-library
我正在使用MSVC来编译一些C代码,这些代码使用标准库函数,例如和其他函数getenv(),sprintf并/W3设置了警告.MSVC告诉我:
'getenv':此函数或变量可能不安全.请考虑使用_dupenv_s.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS
问题:
小智 7
getenv()可能不安全,因为后续对同一函数的调用可能使先前返回的指针无效.结果,用法如
char *a = getenv("A");
char *b = getenv("B");
/* do stuff with both a and b */
Run Code Online (Sandbox Code Playgroud)
可能会破裂,因为a在那一点上仍然无法保证.
getenv_s()通过立即将值复制到调用者提供的缓冲区来避免这种情况,调用者可以完全控制缓冲区的生命周期.dupenv_s()通过使调用者负责管理分配的缓冲区的生命周期来避免这种情况.
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |