所以,我正在用C ++构建一个许可系统的模型。
char * LicenseServer::CreateHash (char* key)
{
char* newHash = nullptr;
//Create the hash if new key.
if (key != m_Key)
{
char* macAddr = GetMACAddress ();
size_t seed = 0;
boost::hash_combine (seed, std::string(key));
boost::hash_combine (seed, std::string(macAddr));
if (seed == size_t(0))
return nullptr;
std::stringstream sed;
sed << seed;
std::string seedstr = sed.str();
newHash = new char[seedstr.length() + 1];
strcpy_s (newHash, seedstr.length() + 1, seedstr.c_str ());
}
return newHash;
}
我发现了一个奇怪的错误:每当我尝试推断新char *的声明时,我的输入参数&#34; key&#34;,就会变为空字符串。
当我到达strign-stream时,它会发生。在&#34; std :: stringstream sed&#34;后,关键变量变为&#34;&#34;。不是空的,但是&#34;&#34;。
之前发生在功能GetMACAddress中,我已经声明了
char newthing[4096]
这里通过声明解决了
char* newthing = new char[4096];
它没有反映出我接下来的新内容,只是停留在&#34;&#34;。
为什么输入参数只是随便清除?
我目前正在使用c ++最新标签在2017年的visual studio,目标15063中构建。
非常感谢。
编辑:对于较小的代码示例。