什么是堆栈溢出(Stack Overflow)?

由于在内存块中没有溢出的错误,所以在内存块中没有溢出的错误,这些类型的错误之间的差异取决于所使用的计算机数据结构,并且共同的特征是尝试写入比C++可用的空间更多的数据。 在C++中,堆栈溢出。通常表现为分段错误,并且...
由于在内存块中没有溢出的错误,所以在内存块中没有溢出的错误,这些类型的错误之间的差异取决于所使用的计算机数据结构,并且共同的特征是尝试写入比C++可用的空间更多的数据。在C++中,堆栈溢出。通常表现为分段错误,并且经常没有额外的信息来确定溢出的发生地点或方式。C++栈溢出的症状可以根据所使用的计算机语言和错误报告机制而变化。堆栈溢出通常表现为分段错误,并且通常没有提供额外的信息来确定溢出发生在何处或如何发生的。Java中的溢出通常会导致虚拟机崩溃,并给出一个相当详细的错误文件。无论溢出发生在哪种语言中,溢出几乎总是可以通过正确的调试和识别原始溢出源来纠正。
提供显式内存管理的计算机语言通常更容易防止堆栈溢出。广泛接受的编程实践通常要求内存分配的一个程序段,程序也应该删除自己。C++允许这种机制,这样仔细监视可以保持程序使用的内存量最小。不提供显式内存管理的语言,而是使用隐式内存管理,更难防止堆栈溢出错误Java在其虚拟机中处理自己的内存,因此不能随意显式删除数据以腾出更多的空间。
新手程序员的一个常见错误是认为在处理自己的内存管理的计算机语言中不会发生堆栈溢出。虽然这在一开始似乎是合理的,事实并非如此。具有隐式内存管理的语言通常具有释放不必要内存块的垃圾收集器,但这些垃圾收集器并不总是在程序员期望的时间工作。依赖垃圾收集器相对危险,它不能总是保护程序不受溢出错误的影响。
溢出错误可能是灾难性的,会使整个程序停止运行,或者它们几乎是静默的,允许程序继续运行。这第二种类型的错误通常是最难发现的,因为以前很多行代码的溢出可能会导致错误。堆栈溢出通常不需要搜索整个程序,但溢出后程序运行的时间越长,则更困难的是要找到并修复错误
  • 发表于 2020-07-12 00:56
  • 阅读 ( 961 )
  • 分类:电脑网络

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具