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 に答える