【发布时间】:2020-12-26 22:17:53
【问题描述】:
https://onlinegdb.com/B1OmLVB6D
我不确定为什么在运行 memcpyByByte 函数后 src 变量会打印两次。
int memcpyByByte(void* src, void* dest, size_t len) {
char* srcC = (char*)src;
char* destC = (char*)dest;
for(int i = 0; i< len; i++){
*(destC+i) = *(srcC+i);
}
}
int main()
{
char a[10] = "1234567890";
char b[10] = "6b";
memcpyByByte(&a, &b, sizeof(a));
printf("src: %s\n", a);
printf("dest: %s", b);
return 0;
}
【问题讨论】:
-
a 对于空终止符来说不够大,因此程序具有未定义的行为。
-
这要么是读取无效内存地址的未定义行为,要么是写入无效内存地址的未定义行为。