我刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW。那两个有什么区别?我刚刚找到Stack overflow (stack exhaustion) not the same as stack buffer overflow,但要么它没有解释它,要么我不理解它。你能救我一下吗?
此致 托拜厄斯
答案 0 :(得分:8)
考虑以下在内存中向下增长的堆栈:
+----------------+
| some data | |
+----------------+ | growth of stack
| 20-byte string | V
+----------------+
limit of stack
当您向20字节字符串写入30个字节时,会发生缓冲区溢出。这会破坏堆栈中的条目(“某些数据”)。
堆栈溢出是当你尝试将 on 上的其他内容推送到堆栈时它已经满了(它表示“堆栈限制”)。堆栈的大小通常有限。
答案 1 :(得分:0)
Stackoverflow
,当程序超出缓冲区边界并在意外部分写入/覆盖数据时,会调用buffer overrun
aka buffer overflow
内存(占用的内存比预期的多)。
通过阅读标记stackoverflow和buffer overflow 的说明,您可以轻松理解这一点。