为什么控制台在 char* 的 memcpy 之后会输出一些错误的字母

Why does the console cout some wrong letters after memcpy of a char*

我将一个 char* 复制到一个 char* 并将其取回并 cout 它。

char buffer[100] = { 0 };
char* name = "foo";
int bar = 12345;
memcpy(buffer, &(bar), 4);
memcpy(buffer + 4, name, 3);

int result = 0;
memcpy(&result, buffer, 4);

char backname[3];
memcpy(backname, buffer + 4, 3);

std::cout << result << std::endl;
std::cout << backname << std::endl;

为什么会这样显示:

12345
foo╠╠╠╠╠╠╠╠╠90

但是 strcmp(backname,"foo")让我知道他们匹配吗?


编辑:

我要解决的问题:

  1. 使用 sizeof(int) 而不是 4。这很可能不是真正的问题。

  2. backname 不是您使用的以空字符结尾的字符串。使用:

    char backname[4] = {0};
    memcpy(backname, buffer + sizeof(int), 3);