浅析段错误和栈溢出

什么段

  我们在学习微机原理的时候就遇到过段,它代表在一个可执行文件中各种的类型信息存放的地方。
  正文段:text用于存储指令;
  数据段:data用于存储已初始化的全局变量;
  bss段:用来存放程序中未初始化或者初始化为0的全局变量和静态变量;
  堆栈段:stack和其他段一样有着自己的大小,一旦越界同样会爆段错误。它是在运行时,程序动态创建的一个堆栈段,放着调用栈,保存着函数调用关系和局部变量。

造成段错误的原因一般有如下三点:

1.内存访问出错
  这类问题的典型代表就是数组越界、变量类型不一致等。
2.非法内存访问
  这类问题主要是程序试图访问内核段内存而产生的错误。
3.栈溢出
  栈,就是用来描述函数之间的调用关系,它由多个栈帧组成,每个栈帧代表着对应运行的函数。栈溢出指的是对栈的使用超出的栈的大小。引起栈溢出的原因主要有二,一个是局部变量所占用的空间太大(解决方法:增大栈空间或者用动态分配,使用堆),二是函数的调用/递归次数太多或者无限调用。

典型的段错误:

	int main(void){ char*s ="hello world";*s ='H';}

  在程序被装载时,系统把“hello world” 连同其它字符串和const类型数据放入到内存的只读区域。在执行时,一个变量s被设为指向该字符串的位置,当再向该位置写时,就会产生段错误。

int main()
{int*ptr = NULL;*ptr =1;
}

  该代码仅仅创建了一个空指针,没有指向一个具体空间,当赋值时,找不到具体的空间,所以会产生段错误。

int main(void)
{int main();return 0;
}

  这个代码是很明显的无限递归,这会导致栈溢出,从而产生段错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

三更灯火五更鸡,正是男儿读书时。 小编整理了一些常用的大数据组件,使用场景及功能特性,希望对后浪有所帮助。 分类名称简介功能特点使用场景大数据存储HDFSHDFS是一个分布式的文件系统,它具有高度的容错,高吞吐量&am…

物联网可应用于十大行业嘛?

来源:亿欧智库摘要:近些年来,全球经济增长乏力,物联网已变成了各国经济发展的新动力。基于此,亿欧智库近日将发布一份新的报告《2018物联网行业应用研究报告》,报告总结出了物联网的十大应用行业&#xff0…

ubuntu下查看window下文本文件乱码的解决方法

在Ubuntu中,在英文的locate下面查看一些从window系统生成的文本文件,有可能用gedit打开时出现的都是乱码,今天用gedit -h看了一下,里面有一个选项是--encoding,于是在终端中运行 gedit --encodinggbk打开gedit&#xf…

浅析死锁

什么是死锁? 死锁就是两个或多个进程在执行的过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,当进程处于这种状态时,如果没有外力的作用,这些进程都无法继续向前进行。这是操作系统层面的一个错误&#xff…

一篇文章搞懂数据仓库:三范式与反范式

少年易老学难成,一寸光阴不可轻。 目录 一、第一范式 二、第二范式 三、第三范式 四、反范式化 五、范式化设计和反范式化设计的优缺点 5.1 范式化 (时间换空间) 5.2 反范式化(空间换时间) 六、OLAP和OLTP中范…

2018年全球AI突破性技术TOP10

来源:艾瑞网摘要:聪明的科技公司都不再单一的专注于自己的传统业务,而是着眼于未来,不断创新技术,跨界融合打造一个整合的生态系统。人工智能是个高科技、宽领域、多维度、跨学科的集大成者,从立足大数据、…

Linux的发展

1. Linux发展史 说起Linux你可能要问Linux是从哪里来的?他是怎么发展的?   要想知道Linux,还得从UNIX说起。 1.1 UNIX发展的历史 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊…

Hbase rowkey设计原则,热点问题

rowKey的作用 读写数据时通过 RowKey 找到对应的 Region;MemStore 中的数据按 RowKey 字典顺序排序;HFile 中的数据按 RowKey 字典顺序排序。 rowkey设计原则 唯一性:类似于MySQL、Oracle中的主键,用于标示唯一的行;…

MEF: MSDN 杂志上的文章(15) 拒绝【多个导出,但只用一个导入,会拒绝,但还是稳定的组合】...

http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx转载于:https://www.cnblogs.com/Ken-Cai/archive/2012/06/22/2558978.html

全球11个行业、71家知名企业的创新Lab与布局

来源:CBInsights新技术的革新引发了商业世界重构的浪潮,在这一波由人工智能引领的创新潮流里唯有拥抱变化才能不为时代淘汰,顺应趋势取得更大的发展。新技术的革新引发了商业世界重构的浪潮,在这一波由人工智能引领的创新潮流里唯…

组队竞赛

题目解析: 队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值。所以实际值把最大值放到最右边,最小是放到最左边。 解题思路: 本题的主要思路是…

【SD】差异值 生成 同一人物 制作 表情包 【1】

说明:只对AI生成的人物,效果稳定。 Reference差异值 生成表情 首先生成一张图片。 测试命令:1 man,chibi,full body, 模型:envyclarityxl02_v10.safetensors [f6c13197db] 种子:2704867166 》》测试命令&#xff1a…

MySQL索引原理、失效情况

声明:本文是小编在学习过程中,东拼西凑整理,如有雷同,纯属借鉴。 Mysql5.7的版本, InnoDB引擎 目录 1 mysql索引知识 1.1 BTree索引 1.2 主键索引和普通索引的区别 1.3 唯一索引vs普通索引 2 mysql索引优化 2.1 查看索引使…

2018年人工智能全景图与发展趋势分析

来源:专知摘要:风险资本家马特图尔克(Matt Turck)最近发布文章,能力越大,责任越大,介绍了大数据与人工智能在2018年发展的趋势,并发布了全景图,涵盖基础架构、开源框架、…

李晨 | 无人机市场浅析

来源:无人机作者简介:西北工业大学民用无人机研发中心副主任无人机市场浅析无人机市场分类过去无人机一直是军用为主,不论是伊拉克战争还是好莱坞大片,无人机在执行军事任务方面起到了不可替代的作用。在2010年以前,军…

[转载] 财经郎眼20120423:长点心吧“两桶油”!

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/06/24/2559970.html

linux 监控网络IO、磁盘、CPU、内存

linux 监控网络IO、磁盘、CPU、内存 CPU:vmstat ,sar –u,top磁盘IO:iostat –xd,sar –d,top网络IO:iftop -n,ifstat,dstat –nt,sar -n DEV 2 3磁盘容量&a…

不要二

题目解析: 本题的重点是要读懂题意,并且需要多读两遍,才能读懂,本题本质就是在二维数组中每个坐标去放蛋糕, 一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,这个就是关键点。对于两…

干货|100张PPT讲透工业机器人的机械结构

来源:机电微学堂未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网&…

现实生活中我们常常遭遇“怀疑”

现实生活中,我们常常遭遇这样的“怀疑”。“最美婆婆”陈贤妹打破路人冷漠出手相救女童,被人猜度为“想出名”;“最美司机”吴斌忍着剧痛完成了“最后的制动”,有人却质疑他违章在先才这么做;看到热心人帮扶摔倒的老人…