0

次のコードでは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.
4

1 に答える 1

1

L "%X"は、BYTEではなくintへのポインタを要求しました

だから、それは

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