高效率的内存拷贝函数memcpy

内存拷贝函数memcpy
memcpy是memory copy的缩写,意为内存复制,在写c语言程序的时候,我们常常会用到它。它的函原型如下:
void *memcpy(void *dest, const void *src, size_t n);  
它的功能是从src的开始位置拷贝n个字节的数据到dest。如果dest存在数据,将会被覆盖。memcpy函数的返回值是dest的指针。memcpy函数定义在string.h头文件里。
自己实现的时候,最简单的方法是用指针按照字节顺序复制即可。但是性能太低,因为其一,一次一个字节效率太低,地址总线一般是32位,能搬运4字节,一次一个肯定慢的不行;其二,当内存区域重叠时会出现混乱情况。一下根据以上两方面考虑提高memcpy函数的性能。首先考虑速度,可以按照cpu位宽搬运数据,效率更高,代码如下:
void * memcpy1(void *dst,const void *src,size_t num){ int nchunks = num/sizeof(dst);   /*按cpu位宽拷贝*/ cout< 如果检测到内存区域有重叠部分,则从末端开始对每个字节进行拷贝。但数据量大时速度慢,将两种方法结合后能够提高拷贝函数性能,代码如下:
void *memcpy(void *dest, const void *src, size_t count)  {     cout< 对比一下,测试代码如下:
int main(){ char a[20]=1133224466558877990;// memcpy1(a+2,a,5);// memcpy2(a+2,a,5); memcpy(a+2,a,5); cout< 运行结果:memcpy1:1111333466558877990memcpy2:1111332466558877990memcpy:1111332466558877990后两种方法正确,第一种方法拷贝时无法规避内存重叠的bug。


Python 模拟键盘鼠标的方式实现自动化
如何在iPhone上使用神经网络和人工智能技术?
外卖小哥面临失业?外国开始使用机器人送外卖
开关模式转换器NB680
考量运算放大器在Type-2补偿器中的动态响应(第一篇)
高效率的内存拷贝函数memcpy
笔记本声卡和音箱
带你走近一款最先进的手术机器人 看看它怎么先进法
台电推出NP900C幻影固态硬盘
全屋智能这个概念渐渐地进入了我们的生活
三星代工和ARM宣布合作,将推出采用7nm工艺制程
LED显示屏中的“怪胎”——异形屏
华灿光电牵手致远互联 数字化转型成果显着
日本工业机器人订单七年来首次下跌,半导体需求带动机器人订单上升
采用LM629和PIC16F877实现平面关节型机械手的设计
荧光原理_磷光和荧光的区别
咖啡机传导与骚扰功率EMI整改
随着人们对安全的要求越来越高,安防AI芯片市场也越来越宽广
选用LED显示屏时,应从哪几个方面考虑
微电子封装技术未来发展面临的问题与挑战