Possible Duplicate:
Problem when copying memory
(tuple1和tuple2是传递给该函数的空指针)
char *data;
data = (char*) calloc (84, 1);
memcpy(data, tuple1, 44);
memcpy(data+44, tuple2, 40);
我已经为数据分配了 84 字节。我正在做第一次内存复制 memcpy(data, tuple1, 44);它将 44 个字节从 tuple1 的地址复制到 data 的地址,当我尝试读取数据时,结果发现它已经在数据的前 44 个字节上复制了 tuple1 的字节,然后再次复制了 tuple1 的 44 个字节直到填满分配给数据的 84 字节。
当我进行第二次内存复制时,我尝试将 tuple2 的 40 字节粘贴到数据地址之后的 44 字节处。实际上,它与 tuple1 执行相同的操作,甚至更多 - 它从数据地址开始粘贴,而不是从数据地址之后的 44 个字节开始粘贴。
这是为什么?!我该如何预防呢?谁能帮帮我,我真的很绝望。
最佳答案
tuple1
和 tuple2
的定义是什么?它们的尺码至少分别为 44 和 40 吗?它们是否可能与数据
指向相同的内存?
关于c - memcpy() 不会停止复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559059/