free/=NULL 足以清除内存,还是应该将 SecureZeroMemory 紧挨着放在它之前?
Is free/=NULL enough to clear memory, or should SecureZeroMemory be placed immediately before it?
清除分配的内存的最佳方法是什么?
- 免费/=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一起使用时的最佳实践。
这取决于你的程序在做什么。如果其他人可以查看已释放内存的缓冲区,您会担心吗?如果内存包含银行帐户详细信息,我会说它是。如果它包含视频游戏的设置,则可能不包含(取决于您的用户作弊的决心)。
一般来说,在释放内存之前粉碎内存不会造成任何伤害。
清除分配的内存的最佳方法是什么?
- 免费/=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一起使用时的最佳实践。
这取决于你的程序在做什么。如果其他人可以查看已释放内存的缓冲区,您会担心吗?如果内存包含银行帐户详细信息,我会说它是。如果它包含视频游戏的设置,则可能不包含(取决于您的用户作弊的决心)。
一般来说,在释放内存之前粉碎内存不会造成任何伤害。