我刚刚发现有一个 STATUS_STACK_BUFFER_OVERRUN 和一个 STATUS_STACK_OVERFLOW,这两者有什么区别?我刚刚看到了堆栈溢出(堆栈耗尽)与堆栈缓冲区溢出不同,但是它要么没有解释清楚,要么我没有理解。你能帮我吗?
谢谢 托比亚斯
谢谢 托比亚斯
Consider the following stack which grows downward in memory:
```+----------------+
| some data | |
+----------------+ | growth of stack
| 20-byte string | V
+----------------+
limit of stack
当你向一个20字节的字符串写入30个字节时,会发生缓冲区溢出。这会破坏堆栈中更高位置的条目(“一些数据”)。
堆栈溢出是指在堆栈已满时尝试将其他内容推入堆栈(标有“堆栈限制”的地方)。堆栈通常受到其最大大小的限制。
Stackoverflow
出现在没有足够内存分配数据时,而 buffer overrun
或称 buffer overflow
是指程序超出缓冲区边界并在意料之外的内存部分中写入/覆盖数据(占用了比预期更多的内存)。
很明显,您只需阅读 stackoverflow 和 buffer overflow 标签的描述即可理解此概念。