【问题标题】:What is the difference between STATUS_STACK_BUFFER_OVERRUN and STATUS_STACK_OVERFLOW?STATUS_STACK_BUFFER_OVERRUN 和 STATUS_STACK_OVERFLOW 有什么区别?
【发布时间】:2012-10-11 10:08:32
【问题描述】:
【问题讨论】:
标签:
windows
stack-overflow
buffer-overflow
buffer-overrun
【解决方案1】:
考虑以下在内存中向下增长的堆栈:
+----------------+
| some data | |
+----------------+ | growth of stack
| 20-byte string | V
+----------------+
limit of stack
当您将 30 个字节写入 20 字节字符串时,会发生缓冲区溢出。这会破坏堆栈中更上层的条目(“一些数据”)。
堆栈溢出是指当您尝试将其他东西 on 压入堆栈时,堆栈已满(此处显示“堆栈限制”)。堆栈的最大大小通常受到限制。
【解决方案2】:
Stackoverflow 出现在内存中没有更多空间来分配数据时,buffer overrun 又名buffer overflow 在程序超出缓冲区边界并在内存的意外部分写入/覆盖数据时调用(占用的内存比预期)。
很容易,您只需阅读标签stackoverflow和buffer overflow的描述即可理解这一点。