gpt4 book ai didi

c - 释放内存时应用程序卡住

转载 作者:行者123 更新时间:2023-11-30 15:55:04 25 4
gpt4 key购买 nike

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

关于c - 释放内存时应用程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12545438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com