【问题标题】: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
【问题描述】:

我刚刚发现有一个 STATUS_STACK_BUFFER_OVERRUN 和一个 STATUS_STACK_OVERFLOW。这2个有什么区别?我刚找到Stack overflow (stack exhaustion) not the same as stack buffer overflow,但要么没有解释,要么我不明白。你能帮帮我吗?

问候 托比亚斯

【问题讨论】:

    标签: 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 在程序超出缓冲区边界并在内存的意外部分写入/覆盖数据时调用(占用的内存比预期)。

      很容易,您只需阅读标签stackoverflowbuffer overflow的描述即可理解这一点

      【讨论】:

        猜你喜欢
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        • 2011-11-22
        • 2015-03-26
        • 2013-08-19
        相关资源
        最近更新 更多