使用带有十六进制值的memcpy

时间:2017-10-30 19:05:20

标签: c memcpy

我能做到

memcpy(buffer, "\0", 1);

但我做不到

memcpy(buffer, 0x0, 1);

它会导致分段错误。

有没有办法可以在没有字符串表示的情况下使用memcpy的十六进制值?

2 个答案:

答案 0 :(得分:2)

memcpy接受两个指针。 "\0"是指向字符串的指针。 0x0被解释为指针NULL,在大多数平台上读取和写入都是非法的。

重写第二个例子的正确方法是使用指针:

int x = 0x0;
memcpy(buffer, &x, 1);

答案 1 :(得分:1)

那些是非常不同的东西。

第一个

memcpy(buffer, "\0", 1);

将文字字符串"\0"的1个字符复制到buffer

第二个

memcpy(buffer, 0x0, 1);

尝试从0复制一个字节。这与

相同
memcpy(buffer, NULL, 1);