我正在写一些学校项目,并且需要交换两个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