打印
[学习资料]

堆栈溢出及其原因

[复制链接]
255|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-4-12 08:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在一个程序中,分配给堆栈的内存是有一定限度的。由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。堆栈溢出就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了别的数据。堆栈溢出时会有意想不到的结果发生,甚至程序会运行崩溃。

一般来说,造成堆栈溢出的原因主要有以下几个:

1、开了数据非常大的局部数据结构,比如数组,造成堆栈溢出

2、过多的递归调用,使用了大量的空间,造成栈溢出

3、有死循环,不断的往堆栈中写入数据

所以要养成良好的编程习惯咯,大的数组尽量不要定义在函数内部,递归注意深度,不要造成函数死循环。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/libi_rong/article/details/52719635

使用特权

评论回复
沙发
huquanz711| | 2024-4-17 08:08 | 只看该作者
变量定义及错误赋值最容易导致溢出

使用特权

评论回复
板凳
FranklinUNK| | 2024-4-22 10:14 | 只看该作者
堆栈大小可以自己分配吗

使用特权

评论回复
地板
AdaMaYun| | 2024-4-24 11:23 | 只看该作者
数组越界,一般直接接卡死了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1364

主题

13994

帖子

8

粉丝