C语言 memcpy函数(增加dst 从第一字节拷贝判断)的内部简单实现方式
来源:互联网 发布:夏易seo 编辑:程序博客网 时间:2024/05/22 03:26
刚学习C语言编程的时候,感觉C内部函数深不可测,通过代码很难实现。后来经常慢慢的学习过程,理解了部分C函数的实现方法,下面简单说下memcpy函数的内部实现方式之一。
简单概括内存拷贝的含义:字节对齐字节进行赋值(比如单个字节对齐单个字节,四个字节对齐四个字节)。
void* MemCpy(void* dest,const void* src,int size)//拷贝函数{ if (NULL == dest || '\0' == *(char*)src || 0 >= size)//判断 dest的地址,如果为空表示没有内存空间储存数据 。判断src是否有值 { return NULL; } char* pdest,* psrc; pdest = (char*)dest; psrc = (char*)src; int nNum = 0; while ((char)-52 != *(pdest - 1))//进行安全内存判断,如果dest指向的不是常量字符串地址,第一个位置的上一个字节是-52 { if ((char)-51 == *(pdest - 1))//连续前10字节都是-51的话 ,退出函数执行 (测试这种方法只对CString有效果) { nNum++; } else { nNum = 0; } if (10 <= nNum) { return NULL; } pdest--; } int remdr = size % 4;//单个字节拷贝, while(remdr--) { *pdest++ = *psrc++; } int nDin = size / 4;//剩下数据为对齐4字节,采用int 4字节 32位拷贝 while(nDin--) { *((int*)pdest) = *((int*)psrc); pdest += 4; psrc += 4; } return dest;}
有点遗憾,关于const char*参数没有找到有效的判断方法。
1 0
- C语言 memcpy函数(增加dst 从第一字节拷贝判断)的内部简单实现方式
- C语言中的字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- C语言如何调用 memcpy 函数 实现内存拷贝
- memcpy的函数内部实现
- memcpy的函数内部实现
- 【C语言】memcpy函数的实现
- memcpy/memset函数的c语言实现
- memcpy/memset函数的c语言实现
- memcpy函数内部实现
- C中字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- C语言中字符串拷贝(strcpy)与内存拷贝(memcpy)的实现
- memcpy和memmove的函数内部实现
- C语言 编写程序实现内存拷贝,不考虑内存重叠。不允许调用memcpy函数
- c语言内存管理函数,模拟memcpy、memmove(实现内存重叠拷贝)、memset
- 字符串拷贝与内存拷贝的区别 c语言--memcpy()
- c语言strcpy函数和memcpy函数,拷贝后,源数组的内容改变了
- 内存拷贝函数的C语言实现
- C语言 string及memcpy,memmove函数的模拟实现
- 锤子手机权限开启方法
- android apk签名问题
- android 如何判断手机已经安装过杀毒软件?
- android app上线
- shell编程--流程控制for,do-while,if-then,break,continue,case等
- C语言 memcpy函数(增加dst 从第一字节拷贝判断)的内部简单实现方式
- NSData无法读取文件的数据
- 如何设置屏幕的亮度?
- objective c 的对象指针到底是什么
- Android如何拿到指定文件夹下的所有图片uri
- 用 Flask 来写个轻博客 (31) — 使用 Flask-Admin 实现 FileSystem 管理
- Android-简单的登入注册
- 安卓fragment问题 初学者求大神指点
- 五子棋源码