3

我需要向下移动一块分配的内存。目前我正在创建一个临时内存,然后将其复制过来,然后他们通过班次将其重新复制回来

void * buf = malloc(5);
void * temp = malloc(5);

memcpy(temp, buf, 5); 
memset(buf, 0, 5);
memcpy(buf, temp + 1, 4);

有没有更好的方法来做到这一点?

4

1 回答 1

12

是的,使用memmove

char * buf = malloc(5);   // pointer arithmetic only on chars!

memmove(buf, buf + 1, 4);
memset(buf + 4, 0, 1);
于 2013-04-23T21:30:30.163 回答