【发布时间】:2018-03-11 19:02:01
【问题描述】:
清除分配的内存的最佳方法是什么?
- 是否免费/=NULL 所有需要的东西
- 在执行 free/=NULL 之前 SecureZeroMemory 是否会增加代码的安全性?
- 或者,添加 SecureZeroMemory 是否过大?
这是我的代码:
DWORD tLen = 128;
BYTE *pbData = (BYTE *)malloc(tLen);
memcpy(pbData, chBuffer, tLen);
// ...work done here...
// Clear it
SecureZeroMemory(pbData, tLen);
free(pbData);pbData=NULL;
谢谢!
编辑:这个问题与某些人所说的问题不是重复。它不是要求何时使用 SecureZeroMemory,而是要求与 free/=NULL 一起使用时的最佳实践。
【问题讨论】:
-
只有在处理内存中的敏感信息时,我才会使用
SecureZeroMemory,在这种情况下... -
这个question 可能对你有帮助
-
谢谢,但是这个问题并没有检查 free() 函数 与 SecureZeroMemory() 一起 - 这个问题只关注 SecureZeroMemory,这与我的不同我问。
-
什么是“free/=NULL”?你是什么意思?您在此处标记了其中一个 cmets,表明这不是重复的,但对我来说显然是重复的。 Free 不会以任何方式清除内存,并且将指针设置为 null 绝对没有任何作用。如果要清除内存,则需要调用 SecureZeroMemory(),这正是建议重复的答案所说的。
-
"free/=NULL' 是 "free(x);x=NULL;" 的简写,谢谢,您的回复刚刚回答了我最初的问题,并确认另一篇文章只是简单地解释了 SecureZeroMemory(),即不是我要问的。
标签: c free securezeromemory