这个问题已经在这里有了答案:
11年前关闭。
缓冲区溢出和缓冲区溢出有什么区别?
缓冲区溢出和堆栈溢出有什么区别?
请包括代码示例。我已经看过Wikipedia中的术语,但无法与C或C++或Java编程相提并论。
最佳答案
将缓冲区视为一个数组。在您尝试引用数组末尾以外的索引时,人们经常会交替使用“溢出”和“溢出”,这很好。就我个人而言,我做出了区分:
缓冲区溢出是当您尝试在数组中放置超出数组可容纳范围的更多项时。它们从缓冲区的末端流出。换句话说,它来自编写。
缓冲区溢出是当您遍历缓冲区并继续读取数组末尾的内容时。您的迭代器正在缓冲区中运行并继续运行。换句话说,它来自和。
堆栈溢出有很大不同。大多数现代编程环境都是基于堆栈的,其中它们使用堆栈数据结构来控制程序流。每次调用函数时,都会在程序的调用堆栈中放置一个新项。当函数返回时,该项目将从堆栈中弹出。当堆栈为空时,程序停止。问题是,此堆栈的大小有限。可能一次调用太多函数并填满堆栈。此时,您有一个堆栈溢出。最常见的方法是在函数调用自身时(递归)。
关于java - 缓冲区溢出(vs)缓冲区溢出(vs)堆栈溢出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1144088/