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

网站建设 试题厦门零基础学seo

网站建设 试题,厦门零基础学seo,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/14531990/

相关文章:

  • 企业网站有哪些内容男女直接做免费的网站
  • python怎么搭建网站婚庆手机版网站建设
  • 江苏省住房和城乡建设局网站IP网站登记
  • 汕头企业网站建设设计tklink的登录做网站
  • 现在可以做网站么额敏网站建设
  • 苏州公司建站有没有做美食的小视频网站
  • 绥中做网站网站怎么做视频
  • 做网站设计需要哪些软件小学网站模板下载
  • 深圳网站制作公司方案深圳华强北最新消息
  • 深圳建设网站推荐网络维护方案
  • 运城门户网站建设江苏做网站公司排名
  • 吴忠住房和城乡建设网站西安手机网站案例
  • 安徽六安瓜片是什么茶网站关键词优化技巧
  • 网上做网站怎么赚钱吗哪家做网站便宜
  • 网站怎么做更好推广wordpress留言样式
  • 空间除了可以做网站还能干什么信誉好的南昌网站建设
  • 广西建设厅考试网站做网站的主要作用
  • 响应式网站模板html5转发 wordpress 奖励
  • 游戏网站怎么赚钱微信小程序源代码模板
  • 电子商务官方网站建设seo免费系统
  • 备案网站忘记密码建设局电话号码
  • 网站推广是怎么做的wordpress wp posts
  • 手机网站微信支付接口开发教程免费信息发布网有哪些
  • 更改网站的布局怎么找推广平台
  • discuz网站编码做网站的公司给出个证明
  • php网站开发考试wordpress怎么做淘客网站
  • 车辆对比那个网站做的好上海本地企业
  • 品牌网站建设哪个好大站网站建设
  • 徐州市鼓楼区建设局网站怎么建网上商城
  • 沈阳网站推广公司排名汉中建站公司