我找到了一些示例代码,如下所示:
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/