c - memcpy() 不会停止复制

标签 c memcpy

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 个字节开始粘贴。

这是为什么?!我该如何预防呢?谁能帮帮我,我真的很绝望。

最佳答案

tuple1tuple2 的定义是什么?它们的尺码至少分别为 44 和 40 吗?它们是否可能与数据指向相同的内存?

关于c - memcpy() 不会停止复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559059/

相关文章:

c++ - 在字节缓冲区中复制一个结构

c - 一核专用单进程

c - 如何使用 copy_from_user 的正确方法?

c - 二元运算是否比 memmove 更快?

c++ - 将字节 vector 转换为浮点 vector

c - Blit 比条件 + 指针增量更快?

c - 如何使用 POSIX 按进程父进程返回 cJSON 片段?

c - 使用 stat 的段错误(核心转储)

c++ - 在新数组中存储字符数组地址

python - 有没有等同于 Memcpy 的 Python