可能的重复:
堆栈溢出和缓冲区溢出有什么区别? https://stackoverflow.com/questions/1120575/what-is-the-difference-between-a-stack-overflow-and-buffer-overflow
缓冲区溢出和缓冲区溢出有什么区别?
缓冲区溢出和堆栈溢出有什么区别?
请包含代码示例。我查看了维基百科中的术语,但无法与 C 或 C++ 或 Java 中的编程相匹配。
将缓冲区视为一个数组。当您尝试引用超出数组末尾的索引时,人们经常互换使用“溢出”和“溢出”,这很好。就我个人而言,我做出了区分:
A 缓冲区溢出是当您尝试在数组中放入比数组所能容纳的更多的项目时。它们从缓冲区的末端流出。换句话说,它来自于writing.
A 缓冲区溢出是当您迭代缓冲区并继续读取数组末尾时。您的迭代器正在缓冲区中运行并继续运行。换句话说,它来自于reading.
A 堆栈溢出有很大不同。大多数现代编程环境都是基于堆栈的,它们使用堆栈数据结构来控制程序流。每次调用函数时,都会在程序的调用堆栈中放置一个新项。当函数返回时,该项目将从堆栈中弹出。当堆栈为空时,程序停止。事情是,该堆栈的大小有限。一次可能会调用太多函数并填满堆栈。此时你会遇到堆栈溢出。最常见的方法是函数调用自身(递归)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)