c - 移动一 block malloc 内存的最简单方法

标签 c

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

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

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

有更好的方法吗?

最佳答案

是的,使用memmove:

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

memmove(buf, buf + 1, 4);
memset(buf + 4, 0, 1);

关于c - 移动一 block malloc 内存的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179508/

相关文章:

c - strtok 函数无法正常运行

c - 如何通过包含指向结构体指针的数组元素来访问和修改结构体内部声明的指针类型变量?

c++ - 如何使用 MinGW 编译器在 Windows 命令提示符下使用 Makefile 编译代码?

c - 打印双向链表时发生访问冲突

c - 没有参数类型的函数指针?

c - 函数局部的静态变量

c - 如何将数据存储在动态结构数组中?

c - 为什么数组的地址等于它在 C 中的值?

创建 -* 选项,处理程序参数

c - 识别有效算术表达式以及识别有效标识符和运算符的 Lex 程序