首页 > 技术 > Linux

linux栈溢出的原因是什么

Linux 2022-09-26 12:07:04  

Linux中,栈溢出的原因是系统栈是由高地址往低地址增长,而数据的写入是按低地址往高地址的顺序写入,所以程序一旦没有对输入的字符数量做出限制,就会存在数据溢出当前栈的可能。栈溢出是缓存区溢出的一种,本质上是写入栈的数据超过栈的大小造成的。

程序员必备接口测试调试工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
后端、前端、测试,同时在线协作,内容实时同步

教程操作环境:linux7.3系统、Dell G3电脑。

linux栈溢出的原因

概述

栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等;和堆相比,栈通常很小,在Linux下,通过ulimit -s可以查看栈的大小。

所谓栈溢出,是缓冲区溢出的一种,本质上是写入栈的数据超过栈的大小,使得数据写入其他单元,往往造成不可预期的后果,最常见的就是程序崩溃。

造成栈溢出的原因

系统栈是由高地址往低地址增长的, 而数据的写入是按低地址到高地址的顺序写入. 如果程序没有对输入的字符数量做出限制, 就存在数据溢出当前栈帧以及覆盖返回地址的可能, 从而实现控制程序的执行流。

实例如下

一个栈溢出的程序:

推荐学习:Linux视频教程

以上就是linux栈溢出的原因是什么的详细内容,更多请关注其它相关文章!

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:https://chcsas.com/ywkf/1217.html

加载中~

木星教程网

统计代码 | 湘ICP备19012813号-5

本网站LOGO受版权及商标保护,版权登记号:国作登字-2022-F-10126915,未经湖南木星科技官方许可,严禁使用。
Copyright © 2012-2022 湖南木星科技有限公司(木星网)版权所有
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源,商业媒体及纸媒请先联系:aishangyiwan@126.com

扫描微信二维码

关注我们可获取更多热点资讯