首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
什么情况下会栈溢出?如何避免?
[问答题]
什么情况下会栈溢出?如何避免?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(42)
分享
纠错
5个回答
添加回答
2
牛客330378763号
情况:1.局部数组过大;2.递归调用层次过多;3.指针或数组越界。 避免:目的:使用更大的空间。1.增大栈的空间;2.使用堆。(动态分配)
发表于 2022-10-01 11:38:42
回复(0)
2
炮专小菜狗
程序中局部变量太多了;局部数组的元素数量过大了;当有递归调用时,递归级数过多,也会快速消耗内存,导致栈溢出。避免栈溢出的方法实际上就两种。无外乎是栈内存设小了,自动数据多了自然就存不下了,溢出在所难免,所以设置更大的栈内存就可以避免。要么就是直接使用动态内存存储较大的局部变量,不用栈内存了,那也自然不会存在溢出了。 -------------------------------------- 指针或者数组越界通常不会直接导致栈溢出的。这种情况更容易产生的是内存访问错误,也就是segmentation fault。或者是一些未定义行为,又或者是导致数据损坏。反正一般是不会导致栈溢出的。上面的回答我觉得可能有问题。
发表于 2023-08-25 13:39:33
回复(0)
0
青山独归远1
1、局部数组过大 2、递归层次太多 3、指针或者数组越界
编辑于 2024-03-16 15:06:40
回复(0)
0
SH久酒鸭
1.局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。 2.递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。 3.指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用户输入等等。 解决这类问题的办法有两个, 一是增大栈空间,二是改用动态分配,使用堆(heap)而不是栈(stack)。
发表于 2023-09-01 17:13:10
回复(0)
0
秋招找到好工作
1、局部数组过大 2、递归层次太多 3、指针和数组越界 解决:增大栈空间或者改用动态分配
发表于 2023-08-07 15:24:17
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
内存技术
上传者:
real19931
难度:
5条回答
42收藏
773浏览
热门推荐
相关试题
关于内存页面置换算法描述,不正确的是()
内存技术
评论
(0)
造成系统抖动的原因不包括()
内存技术
评论
(0)
linux系统中,在物理内存管理过...
内存技术
评论
(0)
分页系统的逻辑地址结构是一维的,分...
操作系统
评论
(1)
你说在销售运营这个岗位上会涉及到一...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题