2011-04-22 40 views
0

我試圖用newElement覆蓋一個元素(未知大小)「copyHere」,但我遇到了問題。我設置copyHere到elementArr的大塊,其中我想覆蓋:關於void *和泛型函數的問題

void *copyHere = ((char *)elementArray + (i * elementSize)); 
copyHere = memcpy(copyHere, *newElement, elementSize); 

我得到一個錯誤,「無效使用無效的表達」。我如何濫用void *或memcpy?根據我的理解,我向memcpy提供一個目標內存塊和一個內存源塊以及我想要複製的源的大小。我已經做到了。而對於void * copyHere,我遍歷了elementArray(未知類型,但已知大小的elementSize)以查找要覆蓋的內存塊。任何線索?

回答

1

newElement之前刪除*。您不能(也不需要)取消引用void指針,將它傳遞給memcpy

1

如果newElement的類型爲void,則不能讓*取消引用。無論如何memcpy需要指針。