次のコードでは03080000
、最初のバイトが 03、2 番目が 08、3 番目が 00、4 番目が 00 のバイト配列に文字列を変換しようとしています。
しかし、メモリを解放しているときにフリーズし続けます。
デバッガー (ビジュアル スタジオ) を使用してステップ実行しようとしましたが、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.