因此,有我撞头了两晚在一排的一个问题:问题复制内存时
(tuple1和tuple2是空指针传递给这个函数)
char *data;
data = (char*) calloc (76, 1);
memcpy(data, tuple1, 32);
memcpy(data+32, tuple2, 44);
的想法是分配内存等于tuple1
和tuple2
(tuple1
为32字节,tuple2
为44)的大小之和,然后复制tuple1
的32个字节并将它们粘贴到数据的地址,然后复制tuple2
的44个字节并粘贴它们数据地址后的32个字节。
事情是,如果我只复制tuple1
或只复制tuple2
它真的被复制到应该是它的地方(我打印数据的方式太长的功能放在这里),但是当我做两个存储器复制第一个memcpy()
工作正常,但第二个没有。
任何人都可以帮助我解决这个严重的问题吗?
你描述应该有什么,由本身,工作。然而,为什么你没有显示的代码会导致它不能工作,有许多原因。请发布一个完整的程序,在编译和运行时显示问题;也描述它的作用,以及你期望它做什么。 – zwol 2011-04-05 15:56:52
证明它。显示一个完整的程序,显示你描述的行为(当一个或另一个memcpy行被注释掉时)。希望在将真实代码缩减为该演示的过程中,您会注意到它突然再次开始工作时,会告诉您什么是错误的。 – 2011-04-05 15:57:44
你怎么知道第二个副本不起作用?你有什么证据? – abelenky 2011-04-05 15:58:31