python读取文件数据堆栈溢出的原因_堆栈溢出一般是什么原因?
堆棧是一個在計算機(jī)科學(xué)中經(jīng)常使用的抽象數(shù)據(jù)類型。堆棧中的物體具有一個特性: 最后一個放入堆棧中的物體總是被最先拿出來, 這個特性通常稱為后進(jìn)先出(LIFO)隊列。 堆棧中定義了一些操作。 兩個最重要的是PUSH和POP。 PUSH操作在堆棧的頂部加入一 個元素。POP操作相反, 在堆棧頂部移去一個元素, 并將堆棧的大小減一。
堆棧溢出的產(chǎn)生是由于過多的函數(shù)調(diào)用,導(dǎo)致調(diào)用堆棧無法容納這些調(diào)用的返回地址,一般在遞歸中產(chǎn)生。堆棧溢出很可能由無限遞歸(Infinite recursion)產(chǎn)生,但也可能僅僅是過多的堆棧層級。
堆溢出:不斷的new 一個對象,一直創(chuàng)建新的對象,
棧溢出:死循環(huán)或者是遞歸太深,遞歸的原因,可能太大,也可能沒有終止。
通?!付褩R绯觥故侵浮刚{(diào)用堆棧(call stack)的溢出」。要通俗地解釋調(diào)用堆??赡鼙容^困難,因為它涉及許多其他計算機(jī)架構(gòu)的知識。而這個答案只是簡單地解釋堆棧這種數(shù)據(jù)結(jié)構(gòu)的特點──先進(jìn)后出/后進(jìn)先出。溢出是指這個數(shù)據(jù)結(jié)構(gòu)滿溢,不能存放更多數(shù)據(jù)。其他的數(shù)據(jù)結(jié)構(gòu)也會遇到這個情況。即使數(shù)據(jù)結(jié)構(gòu)并非固定容量,而是可擴(kuò)展的,在有限的內(nèi)存空間下仍是有滿溢的機(jī)會。
另外,很多時候,「調(diào)用堆棧溢出」的出現(xiàn)是與遞歸(recursion)相關(guān)的。我們可以把一些遞歸的實現(xiàn)改為迭代(iteration),但有時還是必須有一個自定義的堆棧數(shù)據(jù)結(jié)構(gòu),例如對樹的深度優(yōu)先搜索(Depth-First Search, DFS)。自定義的堆棧也是有溢出的可能。
所以,雖然堆棧溢出常指調(diào)用堆棧溢出,但本質(zhì)上也只是一種數(shù)據(jù)結(jié)構(gòu)的滿溢情況。
總結(jié)
以上是生活随笔為你收集整理的python读取文件数据堆栈溢出的原因_堆栈溢出一般是什么原因?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xp做打印服务器 找不到驱动,XP系统安
- 下一篇: 给图片下方加水印_别再看不起美图秀秀啦,