gpt4 book ai didi

c - 堆栈周围变量损坏

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:08 24 4
gpt4 key购买 nike

运行此代码时,我的代码出现错误:堆栈变量 window_text_hex 已损坏。我看不到错误?

DWORD WINAPI fill_matrix(LPVOID lpParameter)
{
char window_text_hex[5];
for (int i = 0; i < 8; i++){
int data_j = 0;
for (int j = 0; j <8; j++)
{

char window_text[5] = { mySerial.data[i][data_j], mySerial.data[i][data_j + 1], mySerial.data[i][data_j + 2], mySerial.data[i][data_j + 3], '\0' };
for (int i = 0; i<4; i++)
{
sprintf(&window_text_hex[i], "%02X", window_text[i]);
}
SetWindowTextA(hWndLabel[i * 8 + j], window_text_hex);
data_j += 4;
}
}
return 0;
}

mySerial.data 是一个 [8][36] 的数组

最佳答案

在您的 for 循环中,i 可以是 3

您正在sprintfwindow_text_hex+3,它有两个字节的空间(window_text_hex[3], windows_text_hex[4]).

sprintf %02X 写入至少三个 字节:两个十六进制数字和一个'\0' 终止符.
(由于您传递的是 char,它实际上可能写得更多。char 通常是有符号类型,但 %X 期望一个 unsigned int。因此负输入(如 -1)会产生长输出(FFFFFFFF)。修复:(unsigned char)window_text[i ].)

您正在编写 window_text_hex 数组的末尾。

关于c - 堆栈周围变量损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32909822/

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