2

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

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

4

1 回答 1

2

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

通常,在释放内存之前,它不会对粉碎内存造成任何伤害。

于 2017-09-29T20:30:17.570 回答