全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详谈Linux开发中常见段错误问题的原因及分析

1    使用非法的内存地址(指针),包括使用未经初始化及已经释放的指针、不存在的地址、受系统保护的地址,只读的地址等,这一类也是最常见和最好解决的段错误问题,使用GDB print一下即可知道原因。

2    内存读/写越界。包括数组访问越界,或在使用一些写内存的函数时,长度指定不正确或者这些函数本身不能指定长度,典型的函数有strcpy(strncpy),sprintf(snprint)等等。

3    对于C++对象,应该通过相应类的接口来去内存进行操作,禁止通过其返回的指针对内存进行写操作,典型的如string类的c_str()接口,如果你强制往其返回的指针进行写操作肯定会段错误的,因为其返回的地址是只读的。

4    函数不要返回其中局部对象的引用或地址,当函数返回时,函数栈弹出,局部对象的地址将失效,改写或读这些地址都会造成未知的后果。

5    避免在栈中定义过大的数组,否则可能导致进程的栈空间不足,此时也会出现段错误,同样的,在创建进程/线程时如果不知道此线程/进程最大需要多少栈空间时最好不要在代码中指定栈大小,应该使用系统默认的,这样问题比较好查,ulimit一下即可知道。这类问题也是为什么我的程序在其他平台跑得好好的,为什么一移植到这个平台就段错误了。

6    操作系统的相关限制,如:进程可以分配的最大内存,进程可以打开的最大文件描述符个数等,在Linux下这些需要通过ulimit、setrlimit、sysctl等来解除相关的限制,这类段错误问题在系统移植中也经常发现,以前我们移植Linux的程序到VxWorks下时经常遇到(VxWorks要改内核配置来解决)。

7    多线程的程序,涉及到多个线程同时操作一块内存时必须进行互斥,否则内存中的内容将不可预料。

8    在多线程环境下使用非线程安全的函数调用,例如 strerror 函数等。

9    在有信号的环境中,使用不可重入函数调用,而这些函数内部会读或写某片内存区,当信号中断时,内存写操作将被打断,而下次进入时将无法避免地出错。

10    跨进程传递某个地址,传递的都是经过映射的虚拟地址,对另外一个进程是不通用的。

11   某些有特殊要求的系统调用,例如epool_wait,正常情况下使用close关闭一个套接字后,epool会不再返回这个socket上的事件,但是如果你使用dup或dup2操作,将导致epool无法进行移除操作,此时再进行读写操作肯定是段错误的。

以上这篇详谈Linux开发中常见段错误问题的原因及分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# linux常见段错误  # Linux下MySQL5.7.18二进制包安装教程(无默认配置文件my_default.cnf)  # Linux环境下段错误的产生原因及调试方法小结  # Linux平台Segmentation fault(段错误)调试过程  # 如果你  # 这类  # 给大家  # 多线程  # 都是  # 也会  # 多个  # 希望能  # 弹出  # 不存在  # 比较好  # 将被  # 好好的  # 为其  # 另外一个  # 中也  # 这篇  # 涉及到  # 过大  # 不正确 


相关文章: 如何选择可靠的免备案建站服务器?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何通过网站建站时间优化SEO与用户体验?  制作公司内部网站有哪些,内网如何建网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  广东专业制作网站有哪些,广东省能源集团有限公司官网?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何快速使用云服务器搭建个人网站?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  网站制作企业,网站的banner和导航栏是指什么?  已有域名如何快速搭建专属网站?  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何在宝塔面板中创建新站点?  江苏网站制作公司有哪些,江苏书法考级官方网站?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  如何破解联通资金短缺导致的基站建设难题?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何配置支付宝与微信支付功能?  如何在新浪SAE免费搭建个人博客?  建站之星备案是否影响网站上线时间?  如何在景安服务器上快速搭建个人网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  代刷网站制作软件,别人代刷火车票靠谱吗?  公司网站设计制作厂家,怎么创建自己的一个网站?  建站DNS解析失败?如何正确配置域名服务器?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何确认建站备案号应放置的具体位置?  临沂网站制作公司有哪些,临沂第四中学官网?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何在VPS电脑上快速搭建网站?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何用wdcp快速搭建高效网站?  名字制作网站免费,所有小说网站的名字?  如何在阿里云ECS服务器部署织梦CMS网站?  如何在宝塔面板创建新站点?  建站OpenVZ教程与优化策略:配置指南与性能提升  岳西云建站教程与模板下载_一站式快速建站系统操作指南  seo网站制作优化,网站SEO优化步骤有哪些?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  建站之星后台密码如何安全设置与找回?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何在Golang中使用replace替换模块_指定本地或远程路径  微信小程序 input输入框控件详解及实例(多种示例)  黑客如何通过漏洞一步步攻陷网站服务器?  音响网站制作视频教程,隆霸音响官方网站?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何快速配置高效服务器建站软件? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。