【发布时间】:2013-05-08 17:26:13
【问题描述】:
我正在写一些学校项目,我需要交换两项 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 和 free。这可能吗?
谢谢
【问题讨论】:
-
与其复制内存,不如直接交换地址?
-
我已经尝试过了,但我认为 void* 数组是不可能的......如果可能的话,你能在这里发布一些代码吗?
-
void 是您的原生长度无符号整数。只需将其转换或将其用作要交换的指针算术即可。除非您使用 free(),否则您不会丢失这些变量。或者如果你使用智能指针你会输?