gpt4 book ai didi

c++ - 奇怪的返回值

转载 作者:行者123 更新时间:2023-11-28 00:27:29 26 4
gpt4 key购买 nike

我的代码,

LPSTR Internal::Gz_GetSystemKey( BOOL SHOW_ERROR, BOOL SHOW_KEY ) {

HW_PROFILE_INFO HwProfInfo;
if (!GetCurrentHwProfile(&HwProfInfo))
{
if(SHOW_ERROR)
Message::Error( "An Internal Error Has Occurred", "Gizmo Message", TRUE );
return NULL;
}

std::string __clean( (char*)HwProfInfo.szHwProfileGuid );
__clean.append( std::string( (char*)HwProfInfo.szHwProfileName ) );

LPSTR neet_key = Crypt::CRC32( Crypt::MD5( (char*)__clean.c_str() ) );

if (SHOW_KEY)
Message::Info( neet_key ); // shows expected result

return neet_key; // returns strange ascii result
};

Gz BOOL Gz_CreateContext( BOOL SHOW_ERROR, BOOL SHOW_KEY ) {

HKEY CHECK; // key result container
BOOL RESULT;
std::wstring neet_key_uni; // must use unicode string in RegSetValueExW

if ( RegOpenKey(HKEY_CURRENT_USER, TEXT("Software\\NEET\\Gizmo\\"), &CHECK) != ERROR_SUCCESS )
goto CREATE_REG_CONTEXT;
else
goto STORE_NEET_KEY;

CREATE_REG_CONTEXT:

if ( RegCreateKeyA( HKEY_CURRENT_USER, "Software\\NEET\\Gizmo\\", &CHECK ) != ERROR_SUCCESS ) {

if( SHOW_ERROR )
Message::Error( "Context Could Not Be Created" );
RESULT = FALSE;
goto END_MACRO;
}

STORE_NEET_KEY:

LPSTR neet_key = Internal::Gz_GetSystemKey( SHOW_ERROR, SHOW_KEY ); // GetSystemKey generates good key, returns weird ascii
Message::Notify( neet_key );
neet_key_uni = std::wstring(neet_key, neet_key+strlen(neet_key));

if ( RegSetValueEx( CHECK, TEXT("Key"), 0, REG_SZ, (const BYTE*)neet_key_uni.c_str(), ( neet_key_uni.size() + 1 ) * sizeof( wchar_t ) ) != ERROR_SUCCESS ) {

if( SHOW_ERROR )
Message::Error( "Context Could Not Be Reached" );
RESULT = FALSE;
goto END_MACRO;
}

RESULT = TRUE;

END_MACRO:

RegCloseKey(CHECK); // safely close registry key
return RESULT;
};

我正在创建一个简单的 PC 识别库用于练习,不用于商业用途。

Message::Info( neet_key );

表演

enter image description here

但实际返回值是

http://gyazo.com/82b25d02e123b56da217c7ff5cb01e57

有什么想法吗? “消息”命名空间/函数只是消息框。至于“Crypt”命名空间/函数,它们不是当前的问题。

最佳答案

来自评论:谁拥有“neet_key”的内存?我的猜测是“Message::Info”显示了一个有效值,因为它来自的任何内存结构仍在内存中,但当您返回时它不再在内存中。因此返回值打印垃圾。

这是 C++ 语言的常见问题。我强烈建议您尽可能避免使用原始指针(尤其是从函数/方法返回时)。对于字符串,您显然可以使用“std::string”。

关于c++ - 奇怪的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24255004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com