c++缓冲区溢出问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++缓冲区溢出问题相关的知识,希望对你有一定的参考价值。

在已损坏了程序内部状态的 找词游戏.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。

这个问题一般是什么原因呢?
请问这个是指哪里错了呢?单步调试的时候是到主函数最后一个一个大括号时出错,输出端显示了“请按任意键继续...”然后就弹出出错提示框。析构函数貌似没有错。那究竟是什么问题呢?

参考技术A 一般都是数组的长度没有处理好, 造成数组越界了.,追问

可是我看了数组长度都没有变动应该不会错的TT

参考技术B 能把代码贴出来看看吗?这样怎么定位问题!追问

确实。。可是代码太长了

参考技术C 自己写的程序,还是别人的。追问

自己写的。。单步调试的时候是在最后一个大括号的时候弹出错误框,这是已经跳过return 0了输出端也已经显示“请按任意键继续...”,析构函数貌似没有错。。究竟是什么原因呢

参考技术D try catch一下异常 看看怎么回事

缓冲区溢出、格式化字符串错误和整数溢出的 C++ 安全框架

【中文标题】缓冲区溢出、格式化字符串错误和整数溢出的 C++ 安全框架【英文标题】:C++ Security Framework for Buffer Overflows, Format String Bugs and Integer Overflows 【发布时间】:2013-02-28 11:48:16 【问题描述】:

请问有谁知道任何可以防止缓冲区溢出、格式字符串错误和整数溢出的 C++ 安全框架?

【问题讨论】:

很好,但问题是,这可能吗? @MM 我不知道这是否可能。我的论文导师告诉我开发两个安全框架:一个用于 Web,一个用于 C++。我发现了很多 web 框架,但是 C++ 似乎没有很多 您无法真正获得 100% 的保护。有像 StackGuard 这样的工具,它使用金丝雀值来检测堆栈溢出(堆溢出是另一回事)和 StackShield,但它们都是可颠覆的。这可能是一个不错的起点——en.wikipedia.org/wiki/Buffer_overflow_protection 【参考方案1】:

这是当前 Microsoft 编译器的标准功能,除了格式字符串错误。这些不是真正的 C++ 错误,而是 C 错误。 C++ 格式化解决方案通常是类型安全的。

【讨论】:

以上是关于c++缓冲区溢出问题的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何工具可以检测 Visual C++ 6.0 上的缓冲区溢出? [关闭]

堆栈缓冲区溢出(Windows,C++):如何检测罪魁祸首?

发生缓冲区溢出

C语言中为了避免缓冲区溢出应尽量使用哪些函数

使用缓冲区和溢出缓冲区将 IMU 数据写入 csv 文件?

C++:带你搞定数组的疑难杂症--缓冲区溢出;数组越界;为什们打印内容能超出数组长度?