我需要移动一块malloced内存。目前我正在创建一个临时内存,然后将其复制并使用shift
重新复制它void * buf = malloc(5);
void * temp = malloc(5);
memcpy(temp, buf, 5);
memset(buf, 0, 5);
memcpy(buf, temp + 1, 4);
有更好的方法吗?
答案 0 :(得分:12)
是的,请使用memmove
:
char * buf = malloc(5); // pointer arithmetic only on chars!
memmove(buf, buf + 1, 4);
memset(buf + 4, 0, 1);