我发现一些示例代码如下:
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
使其不会被优化。
我不能肯定地说为什么这个特定的代码片段选择该功能而不是将内存范围归零的其他方法。可能是代码作者误解了其目的,或者是误导了公司政策。