STATUS_STACK_BUFFER_OVERRUN和STATUS_STACK_OVERFLOW的区别是什么?

7
2个回答

8
考虑以下向下增长的内存栈:
```html

Consider the following stack which grows downward in memory:

```
+----------------+
| some data      |   |
+----------------+   | growth of stack
| 20-byte string |   V
+----------------+
 limit of stack

当你向一个20字节的字符串写入30个字节时,会发生缓冲区溢出。这会破坏堆栈中更高位置的条目(“一些数据”)。

堆栈溢出是指在堆栈已满时尝试将其他内容推入堆栈(标有“堆栈限制”的地方)。堆栈通常受到其最大大小的限制。


0

Stackoverflow 出现在没有足够内存分配数据时,而 buffer overrun 或称 buffer overflow 是指程序超出缓冲区边界并在意料之外的内存部分中写入/覆盖数据(占用了比预期更多的内存)。

很明显,您只需阅读 stackoverflowbuffer overflow 标签的描述即可理解此概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接