STATUS_STACK_BUFFER_OVERRUN和STATUS_STACK_OVERFLOW有什么区别?

Tob*_*ner 7 windows stack-overflow buffer-overflow buffer-overrun

我刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW.那两个有什么区别?我刚刚发现堆栈溢出(堆栈耗尽)与堆栈缓冲区溢出不同,但要么它没有解释它,要么我不理解它.你能帮我吗?

关心托比亚斯

pax*_*blo 8

考虑以下在内存中向下增长的堆栈:

+----------------+
| some data      |   |
+----------------+   | growth of stack
| 20-byte string |   V
+----------------+
 limit of stack
Run Code Online (Sandbox Code Playgroud)

当您向20字节字符串写入30个字节时,会发生缓冲区溢出.这会破坏堆栈中的条目("某些数据").

堆栈溢出是当你试图把别的东西堆栈时,它已经满(它说:"堆栈的限制").堆栈通常受限于其最大尺寸.