一个c++程序,编译没错。运行后出现错误 debug assertion failed

问题描述

一个c++程序,编译没错。运行后出现错误 debug assertion failed

具体错误如图

解决方案

VC++调程序出现如下错误:

Debug Assertion Failed!

Program: D:wyuStuddebugwyuStud.exe

File: afx.inl

Line:157

可能问题:1.野指针;2.内存泄露
解决方法:

1.看一看你的程序里是不是有ASSERT()或VERIFY()语句。这两个宏是用来测试它的参数是否为真的。出现你说的,这说明你的指针或表达试有问题

2.File: afx.inl
Line:157
打开看看就知道了

3.vc++中遇到过此问题,在release下回忽略此问题,其实就是野指针的问题,在release版本下不用关心这个问题,也就是系统帮你给屏蔽了,但是问题还是存在的,真正使用的时候,偶尔会出来给你报个小错。创建窗体等的时候没有new,但是在析构的时候delete了,就会在debug环境下,报这样的错误。打开"编译"->"配置"->"把里面除了release其他的选项全部删除,再构件就OK了
4.首先如果你用的是vc6的话:
a.按F5运行你的程序
b.在出错时,选择“重试”
c.按ALT+7调出“调用栈”窗口
d.双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近。你可以通过查看变量的值来确认

5.可以先声明一个临时的CString变量然后作为暂存,然后把你取得的值放入其中,之后再赋给另一个你要使用的变量,即可解决问题 

6.可能是在编写函数调用指针变量时没有分配空间(如果是在类中定义的指针变量,则指针在多个函数中引用时要分别重新分配空间),检查一下。
7.类似的问题,可能是因为输出对象创建不成功,于是使用的时候用的就是空的对象,于是就出现问题了。

8.“build->clean”

9."Project"->"setting"->"点击c/c++"->"Category选项中选择Preprocessor"
->"在Undefined symbols:填写_DEBUG" 重新编译运行即可

10.我是在做一个ActiveX控件的时候遇到的,由于是初学者,
所以在一个事件处理函数中这些轻率的写:
ClassMyControl pControl;
pControl.f1(); 这些就会出现那个错误,改完Release后虽然异常被屏蔽了,但却直接退出了,解决方法是,声明一个ActiveX控件对象后,还要创建才能正在创建。
pControl.Create(``````);
pControl.f1(); OK!!!

解决方案二:

已经知道了是olecli1.cpp的第644行出的问题,因此针对那个源文件进行调试吧。一般都是指针方面的问题。
@PB人生说的问题现象,我基本同意,但是“release时不用关心这个问题”我觉得不妥,类似的问题不出事也就罢了。如果出了事情,原因都没法找,可能会引起大问题。

解决方案三:

单步跟踪一下,直接用编译器查看你的代码出错位置,根据函数调用堆栈一层层往上走。找到你的代码。olecli应该是系统代码。你调用的有问题

解决方案四:

你这个文件应该是系统的文件吧,所以你应该看看堆栈信息,看看是什么函数引起的。

解决方案五:

点重试,看看蹦在哪儿了,然后看下堆栈调用窗口,一般是空指针或者数组越界之类的问题

解决方案六:

吧东西卸载了,从新下载,还不能用,就让别人给你搞

解决方案七:

出现这种错误的原因,较多,你必须单步定位到出错地方。然后再解决、

时间: 2025-01-02 08:10:53

一个c++程序,编译没错。运行后出现错误 debug assertion failed的相关文章

c-写了一个作业程序,能运行,但有时候能用有时不能用,求解。

问题描述 写了一个作业程序,能运行,但有时候能用有时不能用,求解. //判断一个偶数是哪两个素数之和 #include #include int judgement(int num); int main(void) { int INPUT, add1, add2; printf("Please enter a number:"); scanf("%d", &INPUT); add1 = 0; do{ add1++; add2 = INPUT - add1;

怎么判断一个java程序是否在运行?感激不尽

问题描述 怎么判断一个java程序是否在运行?感激不尽 在写一个程序需要用到这个判断 .然而Runtime.getRuntime().exec(String s)检索进程树的方法 只能检测到exe进程 而我看了一下 java程序运行时 任务管理器中始终只有一个javaw.exe 这样就无法区别是那一个java程序在运行.不知还有别的办法能解决这个问题不,感激不尽! 解决方案 运行开始的时候创建个临时文件,运行结束删除,判断文件是否存在确定程序运行! 解决方案二: 那个程序是不是你写的,如果是,那

android 如何使用imageIO类呢 引用jar包编译没错 运行就报错了 说找不到

问题描述 android 如何使用imageIO类呢 引用jar包编译没错 运行就报错了 说找不到 部分代码 public static String getImagePixel(Bitmap bt) { setBitmap(bt); int R=0; int G=0; int B=0; List list=new ArrayList(); File files = new File("/mnt/sdcard/inncloudimage/req_images/Image.jpg");

vs中编写了一个会显示水平和竖直滚动条的程序,但是运行时出现错误的结果,请问这是为啥?

问题描述 vs中编写了一个会显示水平和竖直滚动条的程序,但是运行时出现错误的结果,请问这是为啥? 这是源代码: #include #include"resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { static

asp.net-vs2012配置文件中配置了一个连接数据库的连接字符串运行后就出现以下几个错误

问题描述 vs2012配置文件中配置了一个连接数据库的连接字符串运行后就出现以下几个错误 我在vs2012配置文件中配置一个数据库的连接字符串,运行后就出现这几个错误 1.未能找到特性"type"的架构信息. 2.未能找到特性"value"的架构信息. 3.未能找到元素"defaultConnectionFactory"的架构信息. 4.未能找到元素"entityFramework"的架构信息. 5.未能找到元素"p

容器“Collection的一个小程序编译时出现的错误,请帮忙解决一下

问题描述 容器"Collection的一个小程序编译时出现的错误,请帮忙解决一下"容器"Collection的一个小程序在windowsXp下的JDK1.5版本/*Collection方法*/importjava.util.*;publicclassTestCollection{publicstaticvoidmain(String[]args){Collectionc=newArrayList();c.add("hello");c.add(newName

c++-WIN7C++程序在XP上运行出现Debug Assertion Failed!

问题描述 WIN7C++程序在XP上运行出现Debug Assertion Failed! 我用VS2010写了一个MFC程序,在自己跟同事的电脑上都可运行,但是在XP上运行Debug里面的exe,就会出现Debug Assertion Failed!请问是怎么回事呢? 解决方案 去win7下,把这个程序以XP兼容方式运行试试看什么情况. 解决方案二: 有指针异常等,点击重试,用编译器打开查看一下具体出错的地方 解决方案三: C++出现debug assertion failed 解决方案四:

struct-这个代码在编译时没有错误,在运行时却弹出debug assertion failed line52

问题描述 这个代码在编译时没有错误,在运行时却弹出debug assertion failed line52 #ifndef Linkstack_H #define Linkstack_H #include using namespace std; template struct Node { T data; Nodenext; }; template class LinkStack { public: LinkStack();//{top=NULL;} ~LinkStack(); void P

mfc 的出错-Debug Assertion failed! 编译提示出错

问题描述 Debug Assertion failed! 编译提示出错 当程序编译时的出错信息提示: Debug Assertion failed! Program: D:rgribintest.exe File:afxcoll.inl Line:376 在调试时的出错提示: First-chance exception in al.exe (MFC42D.DLL): 0xC0000005: Access Violation. First-chance exception in al.exe (