因此,有我撞頭了兩晚在一排的一個問題:問題複製內存時
(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