void Encrypt( FileContent *pFile )
{
/* Get the key total ascii value */
DWORD asciiKeyValue;
for (DWORD i=0; i < pFile->keyLength; i++)
{
asciiKeyValue += pFile->encKey[i];
}
_tprintf(_T("[*]DEBUG The encKey ascii value is: %ld\n"), asciiKeyValue);
}
当
430
时,我得到DWORD asciiKeyValue
的输出,但一旦DWORD asciiKeyValue = 0
是230
,这是应该的。
有人对此有解释吗?当
asciiKeyValue
变量没有分配显式值时,它是否会获得随机值?
它不会“变得”随机。当你声明你的
DWORD
时,它就拥有了之前内存中的所有内容。除非您将内存初始化为某个值(例如 0),否则内存不会被“清理”。
如果你有:
DWORD asciiKeyValue = 0; // Or any other value
然后你会得到一致的结果。
asciiKeyValue
。值不会像其他语言那样隐式初始化为 0。您需要明确设置起始值。我希望你的代码是:
DWORD asciiKeyValue = 0;
这将产生可预测的结果。
就像您从商店购买了一个新相框,然后在上面添加油漆。最后你可能会问“为什么会有一张毁容的幸福情侣图?那不是我画的!”解决方案是用空白画布替换默认的随机照片。
。好吧,你现在有了:-)
DWORD asciiKeyValue = 0 ;
将解决您的问题。