C++ 将字符数组的最后8个字节设置为uu uint64
我正在维基百科上的伪代码中实现SHA1算法 它说我应该将原始长度作为64位附加到消息中,因此我尝试了以下方法:C++ 将字符数组的最后8个字节设置为uu uint64,c++,visual-c++,C++,Visual C++,我正在维基百科上的伪代码中实现SHA1算法 它说我应该将原始长度作为64位附加到消息中,因此我尝试了以下方法: // new_message is of type char[] and is 9+ bytes long *((__int64*)(new_message-8)) = (__int64) length; 这会使新消息的内存损坏 有人能发现错误吗 谢谢 编辑: 天哪,我真蠢。新的_消息指向我的阵列的开始,难怪它崩溃了 不是决定性的,没有看到显示new\u message设置的代码部分
// new_message is of type char[] and is 9+ bytes long
*((__int64*)(new_message-8)) = (__int64) length;
这会使新消息的内存损坏
有人能发现错误吗
谢谢
编辑:
天哪,我真蠢。新的_消息指向我的阵列的开始,难怪它崩溃了 不是决定性的,没有看到显示
new\u message
设置的代码部分
不过,看起来您正在使缓冲区下溢,这会弄乱堆头,堆头可能位于&new\u消息[0]
之前。从外观上看,您正在将\uu int64
写入字符[]
开始之前的8个字节。新消息-8
将从当前指针返回8个字节,这是意图吗?
追加意味着在末尾添加8个字节,您需要确保
1> 最后您有足够的内存(8个额外字节)。
2> 你的指针指向了正确的位置(要附加的位置)你应该写大端还是小端?@monoceres-我正+1-回答你的问题,以纪念你的自我评估的残忍。每个人都去过那里。