STATUS_STACK_BUFFER_OVERRUN和STATUS_STACK_OVERFLOW有什么区别?
我刚刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW。那两个之间有什么区别?我刚刚发现堆栈溢出(堆栈耗尽)与堆栈缓冲区溢出不同,但是它不能解释它,或者我听不懂。您能帮帮我吗?
I just found out that there is a STATUS_STACK_BUFFER_OVERRUN and a STATUS_STACK_OVERFLOW. What's the difference between those 2? I just found Stack overflow (stack exhaustion) not the same as stack buffer overflow but either it doesn't explain it or I don't understand it. Can you help me out?
关于
Tobias
Regards Tobias
考虑以下在内存中向下增长的堆栈:
Consider the following stack which grows downward in memory:
+----------------+
| some data | |
+----------------+ | growth of stack
| 20-byte string | V
+----------------+
limit of stack
当您将20个字节的字符串写入30个字节时,就会发生缓冲区溢出。
A buffer overrun occurs when you write 30 bytes to your 20-byte string. This corrupts entries further up the stack ('some data').
堆栈溢出是当您尝试将其他插入到堆栈中时发生的。堆栈已满时(显示堆栈限制)。堆栈通常受其最大大小限制。
A stack overflow is when you try to push something else on to the stack when it's already full (where it says 'limit of stack'). Stacks are typically limited in their maximum size.