0

我有以下代码,我尝试将字符串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.
4

1 回答 1

1

L"%X" 请求指向 int 的指针,而不是 BYTE

所以,应该是

int x;
swscanf_s(HexChar, L"%X", &x);
bData[n++] = x;
于 2012-09-22T16:45:29.887 回答