我有以下代码,我尝试将字符串03080000
转换为字节数组,第一个字节为03,第二个字节为08,第三个00和第四个00.
但是当我释放记忆时它会一直冻结 我尝试使用调试器(visual studio)单步执行它,但是当我跳过free()函数时,调试器似乎停止并且它只是挂起。
我是否按照我写的方式腐蚀bData
?或者可能出现什么问题?
LPCWSTR lpValueData = L"03080000"
WCHAR HexChar[2] = {0};
UINT i;
UINT n = 0;
DWORD dwDataSize;
PBYTE bData;
dwDataSize = wcslen(lpValueData) / 2;
bData = (PBYTE) malloc(dwDataSize);
for (i = 0; i < dwDataSize * 2; i += 2)
{
HexChar[0] = lpValueData[i];
HexChar[1] = lpValueData[i + 1];
swscanf_s(HexChar, L"%X", &bData[n++]);
}
// I want bData to be {0x03, 0x08, 0x00, 0x00}
// Compare bData to another byte array here with memcmp
free(bData); // freezes here.
答案 0 :(得分:1)
L“%X”请求指向int的指针,而不是BYTE
所以,它一定是
int x;
swscanf_s(HexChar, L"%X", &x);
bData[n++] = x;