问题描述
- 缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。
-
程序调试的时候提示“在已损坏了程序内部状态的XXX.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序” 程序定位到 _CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE);请问这是什么原因呢?
解决方案
指针越界了,或者使用的堆栈溢出
解决方案二:
问题是无法定位到是哪越界呢 使用VS2008编译的
解决方案三:
一般是你指针越界,或者忘记分配内存造成的。
解决方案四:
另外就是调用了一些不安全的函数,比如如下代码:
char * des = new char[10];
strcpy(des, src);
如果原始字符串长度有100个,那么strcpy就不会检查des的大小,结果就是溢出了。
解决方案五:
在 InitInstance() 最后return 的时候报错了
#if defined (_CRTBLD) && !defined (_SYSCRT)
DebuggerWasPresent = IsDebuggerPresent();
_CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE);
解决方案六:
感谢各位,问题已经解决了,是我的数组设置的长度太小,越界了。总结来看,不能把眼光总是聚焦在出错点,要有怀疑的点,然后调试排查问题。
解决方案七:
指针越界,或者忘记分配内存,或写到系统内存
时间: 2024-12-31 02:06:51