C语言 释放内存时应用程序冻结



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

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

所以,一定是

int x;
swscanf_s(HexChar, L"%X", &x);
bData[n++] = x;

最新更新