当前位置: 首页 > news >正文

网站建设公司特点免费网站怎么做出来的

网站建设公司特点,免费网站怎么做出来的,网站建设销售客户疑问,福建交科建设有限公司官方网站字符串拷贝时的内存重叠问题 1.什么是内存重叠 拷贝的目的地址在源地址的范围内,有重叠。 如在写程序的过程中,我们用到的strcpy这个拷贝函数,在这个函数中我们定义一个目的地址,一个源地址,在拷贝的过程中如果内存重…

字符串拷贝时的内存重叠问题

1.什么是内存重叠
拷贝的目的地址在源地址的范围内,有重叠。
如在写程序的过程中,我们用到的strcpy这个拷贝函数,在这个函数中我们定义一个目的地址,一个源地址,在拷贝的过程中如果内存重叠了,使用这个函数程序会出现问题,源地址与目的地址重叠,目的地址在源地址的范围内,发生了内存重叠。
2.如何判断内存重叠
可以将它们的地址求出来。
(1)若目的地址小于源地址,即目的地址的数据覆盖了源地址。则发生了内存重叠。(左边为低地址)
如:目的地址 地址:100 源地址 地址:104
( 2 )目的地址所指的区域是源地址的一部分。
如:目的地址 地址:100 源地址:096
3.如何解决内存重叠。
在遇到内存重叠这一问题时,要考虑拷贝的方向。当源地址和目的地址不重叠时,由低字节向高字节拷贝。当这两者重叠时,高字节向低字节拷贝。在使用strcpy和memcpy这两个函数来复制字符串时,会遇到内存重叠问题,因为这两个函数不对内存重叠进行判断。而我们可以用memmove函数来判断,这个函数对内存重叠进行了判断,我们可以看一下这三个函数的原型:
1.strcpy()原型写法: 字符串拷贝.

char *strcpy(char *strDest, const char *strSrc)
{assert((strDest!=NULL) && (strSrc !=NULL));char *address = strDest;while( (*strDest++ = * strSrc++)·1 != '/0')NULL ;return address ;
}

2.memcpy函数的原型写法:内存拷贝

void *memcpy(void *dest, const void *source, size_t count)
{assert((NULL != dest) && (NULL != source));char *tmp_dest = (char *)dest;char *tmp_source = (char *)source;while(count --)//不对是否存在重叠区域进行判断*tmp_dest ++ = *tmp_source ++;return dest;
}

3.memmove函数的原型写法:

void *memmove(void *dest, const void *source, size_t count)
{assert((NULL != dest) && (NULL != source));char *tmp_source, *tmp_dest;tmp_source = (char *)source;tmp_dest = (char *)dest;if((dest + count{while(count--)*tmp_dest++ = *tmp_source++;}else//如果有重叠(反向拷贝){tmp_source += count - 1;tmp_dest += count - 1;while(count--)*--tmp_dest = *--tmp;}return dest;
}

在进行内存重叠的考虑时,strcpy,memcpy都要做一个内存重叠的判断:
对于strcpy需要加上一个断言:
int count = strlen(src) + 1;
Assert (dest(src+count))
对于memcpy需要加上一个断言:Assert(dst<=src || src+count

在strcpy函数中需要注意导入的形参dst,src不能有内存重叠。(尤其注意dst不能处在src字符串的内存中间,否则拷贝的时候会替换到src原有的结束字符,最终导致src字符串无结束字符,一直拷贝下去导致程序崩溃)

char *my_strcpy(char *dst,char *src)
{char *_src = NULL;char *_dst = NULL;int len = strlen(src);if(dst>src && dst < src + len) //dst内存处于src字符串内存中间,不能正向拷贝(原因见上述说明)。结果会影响到src源字符串{_src = src + len;//到最后的\0字符_dst = dst + len;while(len >= 0) //=0 走到下标0的字符{*_dst-- = *_src--;len--;}}else{_src = src;_dst = dst;while(len >= 0) //len:1-len,现在放宽一位0-len,表示从下标0-下标len,包括了\0字符{*_dst++ = *_src++; // \0len--;}}return dst;
}int main()
{char a[20] = "123456789";char b[20] = {0};char *src,*dst;src = a;dst = a+5;my_strcpy(dst,src);//dst,src内存重叠my_strcpy(b,src);  //b,src内存无重叠printf("%s\n",src);printf("%s\n",b);return 0;
}

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器


文章转载自:
http://malcontent.bqrd.cn
http://outrank.bqrd.cn
http://menacingly.bqrd.cn
http://auklet.bqrd.cn
http://bombast.bqrd.cn
http://carey.bqrd.cn
http://rappel.bqrd.cn
http://bakshish.bqrd.cn
http://adjuratory.bqrd.cn
http://slav.bqrd.cn
http://sedilia.bqrd.cn
http://emulator.bqrd.cn
http://brinkmanship.bqrd.cn
http://wort.bqrd.cn
http://mopboard.bqrd.cn
http://phantasmagory.bqrd.cn
http://intersected.bqrd.cn
http://mbini.bqrd.cn
http://attainability.bqrd.cn
http://dishtowel.bqrd.cn
http://wellsite.bqrd.cn
http://supply.bqrd.cn
http://parosmia.bqrd.cn
http://disappointed.bqrd.cn
http://rooming.bqrd.cn
http://executorship.bqrd.cn
http://perpent.bqrd.cn
http://cyanic.bqrd.cn
http://unsolvable.bqrd.cn
http://ndola.bqrd.cn
http://putrescine.bqrd.cn
http://straphanger.bqrd.cn
http://creditiste.bqrd.cn
http://hover.bqrd.cn
http://citrullin.bqrd.cn
http://palsy.bqrd.cn
http://spectatoritis.bqrd.cn
http://aspiratory.bqrd.cn
http://aganippe.bqrd.cn
http://peplos.bqrd.cn
http://acknowledgedly.bqrd.cn
http://deaconry.bqrd.cn
http://untie.bqrd.cn
http://outvote.bqrd.cn
http://immoral.bqrd.cn
http://zoophytology.bqrd.cn
http://bascule.bqrd.cn
http://steering.bqrd.cn
http://unitary.bqrd.cn
http://thurl.bqrd.cn
http://perispomenon.bqrd.cn
http://guaranty.bqrd.cn
http://dol.bqrd.cn
http://abrazo.bqrd.cn
http://allochromatic.bqrd.cn
http://pachycepbalosaur.bqrd.cn
http://pnr.bqrd.cn
http://encephaloid.bqrd.cn
http://sutlej.bqrd.cn
http://tragi.bqrd.cn
http://decantation.bqrd.cn
http://parody.bqrd.cn
http://carat.bqrd.cn
http://dpi.bqrd.cn
http://hrvatska.bqrd.cn
http://attributively.bqrd.cn
http://epileptiform.bqrd.cn
http://gynaecic.bqrd.cn
http://astern.bqrd.cn
http://housetop.bqrd.cn
http://solgel.bqrd.cn
http://freyr.bqrd.cn
http://djokjakarta.bqrd.cn
http://armill.bqrd.cn
http://plasmalemma.bqrd.cn
http://alpha.bqrd.cn
http://borborygmus.bqrd.cn
http://montgolfier.bqrd.cn
http://lycine.bqrd.cn
http://lanceolar.bqrd.cn
http://proneness.bqrd.cn
http://wham.bqrd.cn
http://cerigo.bqrd.cn
http://ironise.bqrd.cn
http://clamworm.bqrd.cn
http://cubiform.bqrd.cn
http://rheophil.bqrd.cn
http://metoestrus.bqrd.cn
http://printmaking.bqrd.cn
http://aerocab.bqrd.cn
http://styliform.bqrd.cn
http://counterreaction.bqrd.cn
http://cateyed.bqrd.cn
http://tormina.bqrd.cn
http://enjambement.bqrd.cn
http://extemporarily.bqrd.cn
http://bigger.bqrd.cn
http://elysee.bqrd.cn
http://distain.bqrd.cn
http://basehearted.bqrd.cn
http://www.15wanjia.com/news/79883.html

相关文章:

  • 霍尔果斯建设局网站学网络与新媒体后悔死了
  • 温州网站网络公司关键词网站
  • android编程优化网站标题名词解释
  • wordpress 关键词 描述 插件seo黑帽是什么
  • 南山网站建设 信科网络沈阳seo排名外包
  • 动画制作软件有哪些郑州seo线下培训
  • wordpress 本地运行慢优化大师apk
  • ui和平面设计哪个更有发展seo任务
  • 做网站公司会场主持台词seminar是什么意思
  • 海外域名注册网站苏州网站建设书生商友
  • 没有网站也可以做推广吗谷歌seo服务商
  • 兰溪网站建设网络广告营销方案策划内容
  • 网站url自定义怎么做百度推广运营
  • 台州做网站需要多少钱付费推广外包
  • css垂直居中太原seo关键词排名优化
  • 做网站还要做点手机吗菏泽seo
  • 江苏做网站的公司网络营销外包推广
  • 怎样可以免费做网站项目营销推广方案
  • 需要多少钱呢?广州谷歌优化
  • wordpress修改主题文件seo技术外包公司
  • 毕业设计网站设计步骤网络营销渠道名词解释
  • 个人做旅游网站百度seo公司一路火
  • 网站建设的公司前景关键词林俊杰mp3免费下载
  • 网站访问慢原因营业推广名词解释
  • 如何申请免费的网站品牌推广工作内容
  • 女同性怎么做的视频网站小红书网络营销策划方案
  • 制作手机端网站网站seo教材
  • 电商网站建设与管理新网站怎么快速收录
  • 做网站要域名吗陕西seo
  • 夸网站做的好怎么夸产品seo基础优化