我能做到
memcpy(buffer, "\0", 1);
但我做不到
memcpy(buffer, 0x0, 1);
它会导致分段错误。
有没有办法可以在没有字符串表示的情况下使用memcpy的十六进制值?
答案 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);