首页 > 试题广场 > 堆栈溢出一般是由什么原因导致的?
[不定项选择题]
堆栈溢出一般是由什么原因导致的?
  • 函数代码长度过长
  • 循环的递归调用
  • 大数据结构的局部变量
  • 代码运行时错误

10个回答

添加回答
1 代码存储在程序区,与栈没有关系。
2 递归涉及到压栈入栈。
3 局部变量存在栈区。
4 栈的大小是固定的。
发表于 2015-09-22 20:20:57 回复(0)
1.代码是存在程序区,压根不会与栈区相关
2.函数递归调用会压栈入栈
3.局部变量存在栈区
发表于 2015-08-31 22:10:41 回复(1)
1、内存泄露,比如某一数组原先已定义好大小,但是在后续操作中存放的个数超出这一既定长度,会导致堆栈溢出 
2、由于程序员动态申请的内存块使用后未立即释放,导致内存区不够用,也会导致堆栈溢出 
3、程序陷入死循环,往内存写数据,不断地消耗内存空间 
4、程序本身运行起来就要消耗一定大小的内存,但是系统提供的实际内存不够,比如JVM虚拟内存不够让程序使用

发表于 2015-08-27 22:23:27 回复(0)

堆栈溢出一般是由什么原因导致的?

1 )可能是由于循环的递归引起的。

2 )由于分配了过大的局部变量引起。

发表于 2017-04-06 11:53:48 回复(0)
LuL头像 LuL
A:代码存在程序段,过长的代码不会影响栈区。
B:函数的递归调用会用到栈来存储调用点的信息,如果递归跳不出来,栈就会溢出。
C:局部变量存储在栈区,一般栈的大小比较小,2M,所以过大的局部变量也会使栈溢出。
D:我选了D,但答案没选。不知为何。
求解答。
发表于 2017-03-17 11:08:11 回复(0)
为什么D是错的?如果在运行时发生错误(如内存泄露),不是也会导致堆栈溢出吗?
发表于 2016-06-28 11:25:36 回复(1)
1数组越界
2没有回收内存
3深层次递归调用
发表于 2014-11-02 15:09:01 回复(0)
栈 = 栈
堆 = 堆
堆栈  =  栈,
发表于 2016-05-18 13:14:37 回复(1)
栈的分配的内存大小是固定的,比如linux下通常是8M,如果使用大的结构体局部变量,会造成栈溢出。
发表于 2015-08-30 21:09:20 回复(1)
堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致
发表于 2014-10-25 00:25:58 回复(1)
牛客网,程序员必备求职神器
QQ群:169195721
微 信:www_nowcoder_com 关注
微 博:牛客网 关注

扫一扫,把题目装进口袋