ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深度剖析 string —— memcpy memmove

深度剖析 string —— memcpy  memmove 系列文章目录深度剖析strcat strncat深度剖析strchr strstr深度剖析strcmp strncmp深度剖析strcpy strncpy深度剖析strlen strtok深度剖析memcpy memmove深度剖析memset memcmp文章目录系列文章目录前言一、memcpy1.调用结构2.使用详解3.源码剖析二、memmove1.调用结构2.使用详解3.源码剖析前言库函数string是我们经常使用也是非常重要的代码我将会对常用的函数的用法和实现原理进行深度剖析一、memcpy1.调用结构void*memcpy(void*dest,constvoid*src,size_tn);2.使用详解memcpy从 src 复制 count 个字节到 dest原理详解:内存复制一个一个字节拷贝将每个字节在内存中存储的值进行拷贝不再局限于字符串的拷贝3.源码剖析void*Memcpy(void*dest,constvoid*src,size_tcount){//内存复制:从 src 复制 count 个字节到 destassert(destsrc);char*startdest;//记录起始位置的地址while(count--){//拷贝的字节数*(char*)dest*(char*)src;//一个字节一个字节进行拷贝dest(char*)dest1;src(char*)src1;}returnstart;//返回起始位置的地址}二、memmove1.调用结构void*memmove(void*destination,constvoid*source,size_tnum);2.使用详解memmove从 src 复制 count 个字节到 dest原理详解:与memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的如果源空间和目标空间出现重叠就得使用memmove函数处理3.源码剖析void*Memmove(void*dest,void*src,intcount){//内存复制:从 src 复制 count 个字节到 destassert(destsrc);//防止传入空指针char*startdest;if(destsrc){//前-后while(count--){*(char*)dest*(char*)src;dest(char*)dest1;src(char*)src1;}}else{//后-前while(count--){*((char*)destcount)*((char*)srccount);}}returnstart;}
返回列表