gpt4 book ai didi

c++ - memcpy 期间出现 ConnectThread 错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:17 25 4
gpt4 key购买 nike

我正在使用 2 个字符数组(其中一个被声明为静态的)

static char st_arr[8192];
char arr[162];
int itr = 0;

arr 在方法 foo() 中被实例化,其中填充了 162(或更少)字节的数据。此数据正在使用 memcpy() 复制到 st_arr

void foo() {
for(int i=0; i<some_len; i++) { //some_len < 162
arr[i] = some_obj->data[i];
}
memcpy(&st_arr[itr], arr, some_len);
itr += some_len;
}

这里 foo() 被递归调用,目的是用我们在每次 foo() 调用中从 arr 获得的完整数据填充 st_arr。

这有效,但我经常得到以下信息:

beginThreadex Connect Thread error [%d][%s]

在 st_arr 的末尾。这个错误的原因可能是什么。我在程序结束时使用 memcpy 清除 st_arr:

memcpy(&st_arr[0], "", sizeof(st_arr));

最佳答案

memcpy(&st_arr[0], "", sizeof(st_arr)); 是未定义的行为。

您正在尝试从 "" 复制 sizeof(st_arr) 字节(根据您的示例为 8192)内存,其中只有 1 个字节可用,因为空字符串仅由空终止符 ('\0') 组成,因此您正在阅读为此类空字符串分配的内存末尾。

要将内存清零,请考虑使用 std::memset :

std::memset (&st_arr[0], 0, sizeof(st_arr));

关于c++ - memcpy 期间出现 ConnectThread 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953158/

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