内存操作函数memcpy、memmove
来源:互联网 发布:手机如何切换软件 编辑:程序博客网 时间:2024/05/19 02:24
1.模拟实现memcpy
函数memcpy与类型无关,按字节进行拷贝
•函数memcpy从src的位置开始向后复制num个字节的数据到dest的内存位置
•这个函数在遇到’\0’的时候并不会停下来
•如果src和dest有任何的重叠,复制的结果都是未定义的
以下是模拟实现memcpy函数:
#include <stdio.h>#include <windows.h>#include <assert.h>void *my_memcpy(void *dest,const void *src, int count){ assert(dest); assert(src); assert(count > 0); char *p = (char *)dest; char *q = (char *)src; while (count--) { *p++ = *q++; } return dest;}int main(){ char arr[] = "abcdefg"; char buff[10]; my_memcpy(buff,arr,sizeof(arr)); printf("buff = %s\n", buff); system("pause"); return 0;}
结果如下:
2.模拟实现memmove
•和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的
•如果源空间和目标空间出现重叠,就得使用memmove函数处理
以下是模拟实现memmove函数:
#include <stdio.h>#include <windows.h>#include <assert.h>#include <string.h>void *my_memmove(void *dest,const void *src, int size){ assert(dest); assert(src); //从右往左拷贝 char *p = (char *)dest; char *q = (char *)src; if ((char *)dest > (char *)src && (char *)dest < (char *)src + size) { p = p + size - 1; //指针指向最后一个元素 q = q + size - 1; while (size--) { *p-- = *q--; } } //从左往右拷贝 else { while (size--) { *p++ = *q++; } } return dest;}int main(){ char arr[20] = "abcdefg"; my_memmove(arr + 1, arr, strlen(arr) + 1); printf("after arr = %s\n", arr); system("pause"); return 0;}
结果如下:
阅读全文
0 0
- 内存操作函数memcpy、memmove
- 内存操作函数memmove,memcpy,memset
- 内存操作函数memcpy和memmove
- 模拟实现内存操作函数memcpy、memmove
- C语言中内存操作函数 - memcpy ,memmove
- 内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
- 内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
- 操作内存利器memset,memmove,memcpy
- memcpy,memccpy,memmove函数
- memcpy函数, strcpy(), memmove().
- memcpy,memccpy,memmove函数
- memcpy,memccpy,memmove函数
- memcpy 和 memmove 函数
- memmove,memcpy函数详解
- memmove和memcpy函数
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 内存操作----memcpy&memmove ---通用swap(强大的)
- 内存拷贝函数strcpy()、memcpy()、memmove()、memset()的用法
- Map put和remove的 使用
- 20171125 ASCII码的转换
- Javaweb实现旅游管理系统(商城)(二)
- Java任务--Map
- python 字典
- 内存操作函数memcpy、memmove
- Grunt 笔记
- 习题6.16
- Python定时任务APScheduler框架的使用
- os.path
- Python 元组
- js中通过split函数分割字符串成数组
- FZU
- 集装箱数据众包平台中期检查个人总结