私は次のコードを持っています:
#include <cstring>
#include <boost/functional/hash.hpp>
#include <iostream>
int main(int argc, char **argv)
{
const char *str1 = "teststring";
// copy string
size_t len = strlen(str1);
char *str2 = new char[len+1];
strcpy(str2, str1);
// hash strings
std::cout << "str1: " << str1 << "; " << boost::hash<const char*>()(str1) << std::endl;
std::cout << "str2: " << str2 << "; " << boost::hash<const char*>()(str2) << std::endl;
delete[] str2;
return 0;
}
私は常にstr1に対して同じハッシュを取得します(予想どおり)。ただし、str2は異なります。実際、プログラムを実行するたびに異なるハッシュが返されます。
誰かが理由を説明できますか?