我正在寫一些學校項目,並且需要交換兩個void *指針數組。我可以用類似下面的代碼做到這一點:在C中交換不帶memcpy的void *指針數組項目#
void swap(void *base, int len, int width)
{
void *p = malloc(width);
memcpy(p,base,width);
memcpy(base,(char*)base+width,width);
memcpy((char*)base+width,p,width);
free(p);
}
但我需要交換項目,而不memcpy的,只有使用malloc,realloc的和免費的。這甚至有可能嗎?
謝謝
而不是複製內存,爲什麼不交換地址? – 2013-05-14 12:26:29
我已經嘗試過,但我認爲這是不可能的void *數組...如果可能,你可以在這裏發佈一些代碼嗎? – Firzen 2013-05-14 12:28:20
void是您的本地長度無符號整數。只需將其轉換或使用它作爲交換的指針算術。除非使用free(),否則不會丟失這些變量。或者,如果你使用智能指針,你會失敗嗎? – 2013-05-14 12:28:53