free/=NULL 足以清除内存,还是应该将 SecureZeroMemory 紧挨着放在它之前?

Is free/=NULL enough to clear memory, or should SecureZeroMemory be placed immediately before it?

清除分配的内存的最佳方法是什么?

  1. 免费/=NULL 所有需要的
  2. 在执行 free/=NULL 之前使用 SecureZeroMemory 是否会增加代码的安全性?
  3. 或者,添加 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一起使用时的最佳实践。

这取决于你的程序在做什么。如果其他人可以查看已释放内存的缓冲区,您会担心吗?如果内存包含银行帐户详细信息,我会说它是。如果它包含视频游戏的设置,则可能不包含(取决于您的用户作弊的决心)。

一般来说,在释放内存之前粉碎内存不会造成任何伤害。