c++ - 什么时候应该使用 SecureZeroMemory()?

标签 c++

我找到了一些示例代码,如下所示:

addrinfo hints;
SecureZeroMemory(&hints, sizeof(hints));

这里有使用 SecureZeroMemory() 的理由吗?为什么不只是

addrinfo hints = {0};

示例代码: http://msdn.microsoft.com/en-us/library/windows/desktop/ms742203(v=vs.85).aspx

最佳答案

如果(例如)变量在当前范围内不再使用(或在编译器证明它不会改变程序的内部连贯性的任何其他情况下),编译器可以优化清零语句。对于安全关键内存,当外部进程检查您的内存时,这可能会危及应用程序的安全性。 SecureZeroMemory 的编写使其不会被优化掉。

我无法确定为什么这个特定的代码片段会选择该函数而不是其他将内存范围清零的方法。这可能是代码作者对其目的的误解,也可能是公司政策的误导。

关于c++ - 什么时候应该使用 SecureZeroMemory()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944026/

相关文章:

c++ - 设置类的枚举成员无效使用 ‘enum'

c++ - 在 qt c++ 应用程序中显示实时视频的问题

c++ - 带字符的矩阵

c++ - 了解零规则

c++ - 具有虚拟析构函数的池分配器

c++ - 返回 std::string 作为 const 引用

c++ - 将对基类的引用作为模板参数传递

c++ - 重载 operator<< operator== 和 operator!=

c++ - Makefile 并不总是重建

c++ - 有没有办法排队线程?