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

网站建设推广内容wordpress 添加编辑框

网站建设推广内容,wordpress 添加编辑框,培训平台有哪些,上海崇明林业建设有限公司网站休对故人思故国#xff0c;且将新火试新茶。诗酒趁年华。 ——《望江南超然台作》【宋】苏轼 目录 正文#xff1a; 首先我们要明白出现问题的原因: 1. 缓冲区溢出 2. 错误的字符串声明方式 3. 缺乏对NULL指针的检查 解决方案#xff1a; 下期预告#xff1a;C字符串… 休对故人思故国且将新火试新茶。诗酒趁年华。                                                                             ——《望江南·超然台作》【宋】苏轼 目录 正文 首先我们要明白出现问题的原因: 1. 缓冲区溢出 2. 错误的字符串声明方式 3. 缺乏对NULL指针的检查 解决方案 下期预告C字符串中的string类操作 上期的最后我们抛出了一个新的问题那就是如果我们发现目标对象的内存已经不足但我们还是将资源对象拼接到目标对象那里那么在目标内存那里的内存会有什么变化会对我们的程序有什么危害。现在就让我们看一看 正文 我们来看一下代码实例 #includeiostream using namespace std; #includestring.h const int MAX14; int main() { char s[MAX]{0}; char n[]{hello}; chr m[]{wello}; char x[]{only you can do it }//1 coutstrcpy(s,n); //2 coutstrcpy(s,m,2); //3 coutstrcat(s,m); //4 coutstrcat(s,x);//新加入的实例int unsigned lenstrlen(s); for(int i0;istrlen(s);i) { couts[i]endl; } return 0; } 在昨天的代码中我加入了一个新的字符数组然后将这个字符数组拼接到s数组中然后输出这个数组。这个时候问题就出现了我们可以看到在第三步结束时我们的数组s所剩的存储空间还有4个位但是我们的资源数组x的长度远远超过4所以这个时候就会出现一个问题那就是数据溢出。我们要知道数据溢出之后就会向后填充溢出的部分但是这个数组之后的空间存储了其他的数据。这就是说溢出的数据会替换掉下一个位置原本的数据。比如我们s数组之后存储的是数组a那么s数组溢出的数据就会侵占原本a数组中元素的位置导致a数组的存储内容出现问题。 这个问题十分的严重因为一不小心就会导致整个项目出现bug无法运行尤其可怕的是这种溢出系统是不会报错的也就是说会在我们不知道的情况下出错。如果是个巨大的项目那么就是一个十分棘手的bug。 首先我们要明白出现问题的原因: strcat这类的函数在C语言等编程语言中用于将两个字符串连接起来即将源字符串src拼接到目标字符串dest的末尾。然而这类函数存在安全缺陷主要原因包括 1. 缓冲区溢出 根本原因strcat函数没有检查目标字符串dest的空间是否足够以容纳源字符串src。如果dest所指向的缓冲区大小不足以容纳两个字符串连接后的结果那么strcat会继续在dest的原始内存区域之后写入数据直到src的末尾。这会导致缓冲区溢出可能覆盖相邻内存区域的数据引发程序崩溃或安全漏洞。危害缓冲区溢出是许多安全漏洞的根源攻击者可以利用这一漏洞执行任意代码、提升权限或绕过安全机制。 2. 错误的字符串声明方式 在使用strcat时如果目标字符串是通过指针指向一个字符串常量如char *dest initial;则尝试修改这个字符串即拼接新内容将导致未定义行为因为字符串常量通常存储在只读内存区域。正确的做法是使用字符数组如char dest[SIZE] initial;来确保有足够的空间进行字符串操作并且该数组是可修改的。 3. 缺乏对NULL指针的检查 如果strcat的任一参数为NULL其行为是未定义的。在实际使用中应该检查指针的有效性以避免潜在的空指针解引用错误。主要原因 解决方案 所以C有了这类函数的升级版更加的安全 strnlen_s,strcpy_s,strncpy_s,strcat_s等几个函数 请看优化后的代码 /*#includeiostream using namespace std; #includestring.h #includecstring const int MAX12; int main() { char s[MAX]{0}; char n[]{hello}; char m[]{wello}; //coutstrcpy(s,n); coutstrcpy_s(s,MAX,n) endl; //coutstrcpy(s,n,2); coutstrcpy_s(s,MAX,n,2); //coutstrcat(s,m); coutstrcat_s(s,MAX,m);unsigned int lenstrlen(s); for(int i0;ilen;i) { couts[i]endl; } return 0; } */#includeiostream using namespace std; #includestring.h #includecstringconst int MAX12;int main() {char s[MAX]{0};char n[]{hello};char m[]{wello};// 使用strncpy来安全地复制字符串strncpy(s, n, MAX);s[MAX-1] \0; // 确保字符串以null终止cout s endl;// 使用strncat来安全地连接字符串strncat(s, m, MAX-strlen(s)-1);//求出剩余内存的长度s[MAX-1] \0; // 确保字符串以null终止cout s endl;unsigned int len strlen(s);for(unsigned int i0; ilen; i){cout s[i] endl;}return 0; } 一些第三方库提供了额外的安全函数这些函数通过检查边界和提供其他保护措施来增强C的安全性。例如Microsoft的C运行时库CRT提供了安全版本的函数如strcpy_s。部分编译器可能无法使用 这里说明一下代码中其实我列了两种的方式第一种可能会在编译器中无法通过所以我又写了第二种方式这种方式也是可以的不过就是要自己对结尾加上一个结束符这就考验编写者的个人细心程度了所以这种办法也不是很常用因此在C中又诞生了一种更简单的更安全的方法那就是string类里的函数比如strlcpy。 这些代码很简单没什么要特殊注意的自己记住这些格式就没问题只需要记住最原始的strcpy之类的函数是没有自动停止的功能会产生一些隐藏的bug有这个意识就可以了即使对此有了完整的技术可以杜绝这种隐患但是我们还是要保持这种意识对我们写代码有帮助。 下期我们就来讲一下string类里的相关操作。 到这里这篇关于C字符串操作中的陷阱就说完了求一个免费的赞感谢阅读。 下期预告C字符串中的string类操作
http://www.hkea.cn/news/14550210/

相关文章:

  • 网站建设维护教程做纺织外贸网站
  • 网站建设 可行性wordpress 分类全文
  • 网站管理页面目前流行的网站开发工具
  • 怎么找个人搭建网站国外设计模板网站
  • 买服务器的网站杭州g20网站建设公司
  • 外贸网站 万网企业网站推广技巧和方法
  • 长春电商网站建设价格低自己做网站上传相册
  • wordpress建站费用免费cms建站系统有哪些
  • 上海市建设小学网站合肥在线网站
  • 网站建设有什么系统网站建设用细节取胜
  • 网站开发安全管理电商网站怎么做
  • 餐饮网站开发方案阿里云网站建设方案书一定要嘛
  • 怎样做个网站her123 wordpress
  • 阆中网站建设做网站不签合同
  • ppt免费下载雷锋网站东莞推广系统哪里找
  • 可信赖的宜昌网站建设白塔网站建设
  • 网站名称注册程序服装网站建设的规划
  • 做网站公司牛鼻子飞鱼ip代理
  • 网站运营主体阿里网站域名要购卖吗
  • 中国十大网站建设企业网站建设 文章
  • 广西建设网站网址多少站内推广有哪些方式
  • 网站菜单样式网站开发意见书
  • 广告图片网站源码惊艳的网站
  • 做拍卖的网站有哪些wordpress游览量
  • 免费网站空间申请哪个好福州网seo
  • 提供网站建设管理提供常州微信网站建设
  • 深圳商城网站建设报价WordPress中英文旅游模板
  • 企业营销网站开发建设专家网站建设的策划方案
  • 郑州建站模板搭建云南微网站制作哪家好
  • 服装集团网站建设随州网站制作