我刚刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW。 那两个有什么区别? 我只是发现堆栈溢出(堆栈耗尽)不同于堆栈缓冲区溢出,但要么不解释,要么我不明白。 你能帮我吗?
问候Tobias
我的溢出代码不起作用
debugging不可破坏的应用程序内存损坏
在Windows中debugging堆栈溢出?
大的二维arrays给出了分段错误
错误:在Windows环境中,堆栈使用情况太接近极限了
考虑以下在内存中向下增长的堆栈:
+----------------+ | some data | | +----------------+ | growth of stack | 20-byte string | V +----------------+ limit of stack
当您向您的20字节字符串写入30个字节时,发生缓冲区溢出。 这破坏了进一步向上堆栈(“一些数据”)。
堆栈溢出是在堆栈已满时尝试将其他堆栈推送到堆栈(它表示“堆栈限制”)。 堆栈的最大尺寸通常受到限制。
当内存中没有更多的空间来分配数据时,将出现Stackoverflow ,并且当程序超出缓冲区边界并在覆盖内存的意外部分写入/覆盖数据(占用比预期更多的内存)时调用buffer overrun (也称为buffer overflow )。
很容易,只要阅读标签stackoverflow和缓冲区溢出的描述就可以理解这一点 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。