必威体育Betway必威体育官网
当前位置:首页 > IT技术

【干货】堆栈溢出一般是什么原因?

时间:2019-09-28 21:41:09来源:IT技术作者:seo实验室小编阅读:76次「手机版」
 

堆栈溢出

堆栈是一个在计算机科学中经常使用的抽象数据类型。堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。 PUSH操作在堆栈的顶部加入一 个元素。POP操作相反, 在堆栈顶部移去一个元素, 并将堆栈的大小减一。

堆栈溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆栈溢出很可能由无限递归(Infinite recursion)产生,但也可能仅仅是过多的堆栈层级。

堆溢出:不断的new 一个对象,一直创建新的对象,

栈溢出:死循环或者是递归太深,递归的原因,可能太大,也可能没有终止。

通常「堆栈溢出」是指「调用堆栈(call stack)的溢出」。要通俗地解释调用堆栈可能比较困难,因为它涉及许多其他计算机架构的知识。而这个答案只是简单地解释堆栈这种数据结构的特点──先进后出/后进先出。溢出是指这个数据结构满溢,不能存放更多数据。其他的数据结构也会遇到这个情况。即使数据结构并非固定容量,而是可扩展的,在有限的内存空间下仍是有满溢的机会。

另外,很多时候,「调用堆栈溢出」的出现是与递归(recursion)相关的。我们可以把一些递归的实现改为迭代(iteration),但有时还是必须有一个自定义的堆栈数据结构,例如对树的深度优先搜索(depth-First Search, DFS)。自定义的堆栈也是有溢出的可能。

所以,虽然堆栈溢出常指调用堆栈溢出,但本质上也只是一种数据结构的满溢情况。

相关阅读

常见的内存泄漏原因及解决方法

(Memory Leak,内存泄漏)为什么会产生内存泄漏? 当一个对象已经不需要再使用本该被

网站快照回档倒退是什么原因造成的?

网站快照回档倒退几乎所有网站都会经历的事,也是网站优化公司牵肠挂肚的事,因为快照是否稳定更新是预示网站是否在搜索引擎收录的正

Java堆栈简介

JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。基本,栈stack和堆heap这

android studio 创建项目失败原因Failed to create

1.先把问题贴出来 看看有没有小伙伴一样的大意说的原因就是创建目录失败,就百度查一查 发现 没有配对的问题目录结构都是空的,其实

造成服务器宕机的原因以及解决方案

服务器是数据和网站的载体,如若服务器出现问题,那么放在上面的数据和网站也同样会受到牵连,所谓皮之不存,毛将焉附!所以无论是服务商

分享到:

栏目导航

推荐阅读

热门阅读