- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
This MSND article说 SecureZeroMemory()
适用于在内存中存储了一段时间的敏感数据应该确保在不再需要时尽快覆盖的情况。 this SO question的答案解释为什么这会有所作为。
现在使用 SecureZeroMemory()
来初始化每个内存块有什么意义吗?例如,在一个项目中,我看到如下代码:
ICONINFO ii;
::SecureZeroMemory(&ii, sizeof(ICONINFO));
if (::GetIconInfo(hIcon, &ii))
{
//do stuff, then
//release bitmaps
if(ii.hbmMask)
::DeleteObject(ii.hbmMask);
if(ii.hbmColor)
::DeleteObject(ii.hbmColor);
}
为什么在这里使用SecureZeroMemory()
而不是ZeroMemory()
、memset()
或值初始化?我的意思是如果编译器认为初始化是不必要的并且想要优化它——我为什么要强制执行它?有什么理由在这里使用 SecureZeroMemory()
吗?
最佳答案
SecureZeroMemory 从不被编译器优化掉。如果您需要担心要清理的内存内容,那么这一点很重要,比如它是否包含非常敏感的用户信息,例如银行软件、密码等。显然,如果您不需要担心这些事情,您可以使用任何其他方式清理内存缓冲区,或者如果没有必要则根本不清理。
关于c++ - 当安全不是问题时,有什么理由使用 SecureZeroMemory() 而不是 memset() 或 ZeroMemory() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012602/
您好,我希望我的下一个输出(在本例中就是字母)在上一个输出之后输出 8 个空格。这适用于第一个字符,但之后的 printf 语句不起作用。它在第一个 printf 语句之后立即打印,我试图将其设置为
我想知道制作 std::list<>::splice 背后的基本原理是什么使引用被拼接到新容器中的子序列的迭代器无效。这对我来说有点不合逻辑,尤其是考虑到标准 std::container::swap
谁能告诉我为什么我应该使用 Azure Function 输出绑定(bind)(例如 SendGrid 或 Twilio)而不是仅仅在我的 C# 函数中显式使用适当的 SDK(例如 Sendgrid
我们在当前项目中使用 React 和 TypeScript,我遇到了以下行为。 import React, { Component } from 'react'; 我将上面的行替换为下面的行,因为它似
我是一名优秀的程序员,十分优秀!