声明变量会清除参数

时间:2017-12-04 14:55:49

标签: c++ pointers

所以,我正在用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中构建。

非常感谢。

编辑:对于较小的代码示例。

0 个答案:

没有答案