堆栈溢出是一种编程错误,在这种错误中,由于内存块中没有剩余空间,将数据写入特定内存块的尝试失败。这种类型的错误与缓冲区溢出、堆溢出和堆栈缓冲区溢出的发生方式相同。这些类型错误之间的差异取决于所使用的计算机数据结构,其共同特点是试图写入的数据超过了可用空间。
堆栈溢出的症状可能因使用的计算机语言和可用的错误报告机制而异。在C++中,堆栈溢出常常表现为分段错误,并且经常没有给出额外的信息来确定溢出发生在何处或如何发生。Java中的溢出通常会导致虚拟机崩溃,并给出合理详细的错误文件。不管发生溢出的语言是什么,通过正确调试和识别原始溢出源,几乎总能纠正溢出。
提供显式内存管理的计算机语言通常更容易防止堆栈溢出。广泛接受的编程实践通常规定,对于程序分配的每个内存段,程序也应该删除自身。C++允许这种机制,并且仔细监视这样可以保持程序使用的内存量达到最小值。不提供显式内存管理而使用隐式内存管理的语言更难避免堆栈溢出错误。Java在其虚拟机中处理自己的内存,因此不能随意显式删除数据以腾出空间容纳更多数据。
新手程序员的一个常见错误是假设在处理自己内存管理的计算机语言中不会发生堆栈溢出。虽然一开始这似乎是合理的,但事实并非如此。具有隐式内存管理的语言通常具有垃圾收集器,可以释放不必要的内存块,但这些垃圾收集器并不总是在程序员期望的时间工作。依赖垃圾收集器是相对危险的,它不能总是保护程序不受溢出错误的影响。
溢出错误可以是灾难性的,可以使整个程序停止,也可以几乎保持沉默,使程序继续运行。第二类错误通常是最难发现的,因为之前的许多行代码溢出可能会导致错误发生。堆栈溢出通常不需要搜索整个程序,但溢出后程序运行的时间越长,查找和修复错误就越困难。
...种**和删除机制使队列成为先进先出(FIFO)数据结构。 什么是堆栈? 如前所述,stack是一种数据结构,其中元素只从称为top的一端添加和删除。堆栈只允许两个基本操作,即push和pop。push操作将新元素添加到堆栈顶部。pop操作从...
...别之前被填充,并且给定级别中的节点从左到右填充。 什么是堆栈? 如前所述,stack是一种数据结构,其中元素只从称为top的一端添加和删除。堆栈只允许两个基本操作,即push和pop。push操作将新元素添加到堆栈顶部。pop操作从...
... stack overflow的薪资计算器(web):面向开发人员(带有工作列表) ...
...种混乱对于那些不得不处理多个谷歌账户的人来说并不是什么新鲜事。 当您第一次打开堆栈时,会显示一系列图标,表示各种堆栈,包括账单、银行、房屋、ID、医疗、收据和星号。如果这些都不适合你的需要,你可以点击右上...
...要求您调整其功能(例如,告诉天气小部件您希望它报告什么)。 要在屏幕上移动小部件或移动到另一个屏幕,只需长按它直到它开始摇晃,然后移动到你想要的地方。如果你想摆脱这个小部件,长按以显示一个删除选项。 但...
Stack Overflow,一个为开发者和软件工程师提供的热门问答网站,今天宣布了一种新的黑暗模式。该公司表示,该模式是该网站有史以来最受欢迎的功能要求。 看起来,嗯,是黑暗模式。这是一个屏幕截图,由堆栈溢出...
...编程问题的答案。如果你这么做了,很有可能你会在Stack Overflow上结束,这是一个由软件专家Joel Spolsky创建的问答网站。从2008年开始,这家相对利基的网站已经发展成为世界上最大的50家网站之一,涵盖了从编码到烹饪到高尔夫...
...师或开发人员,你知道整理简历并不总是那么容易。StackOverflow引入了一个名为开发者故事(DeveloperStories)的新工具,希望它能让你的简历看起来更容易。开发者故事通过提供两个基本视图将自己与传统简历区分开来:普通简历...
...是在CarlCheo编译的,它来自各种各样的源代码,比如Stack Overflow和程序员Stack Exchange。这些概念是大多数计算机科学专业的学生在大学里会接触到的,它们可以使困难的概念更容易理解或简单地“点击”以下是列表中我最喜欢的几...
...d more.PrevNextView All Jeff Atwood于2008年共同创建并建立了Stack Overflow。该网站以所有事物编程的问题和答案为特色,后来发展成为Stack Exchange网络,这是一个免费、开放的集合,共有89个网站,主题从烹饪、摄影到IT安全和认知科学。s...