debug assertion failed c语言((c++ debug assertion failed)帮我调试程序.)

本文目录
- (c++ debug assertion failed)帮我调试程序.
- 我的这段C语言程序怎么报debug assertion failed错误郁闷~~~~
- C语言新手小白 遇到Debug Assertion Failed问题
- Debug Assertion Failed! 求教高手!C语言
- 初学C语言,运行程序出现debug assertion failed!希望到手帮助解决,谢谢!
- C++ Debug Assertion Failed!
- 为什么C语言中的Debug Assertion Failed会出错
- c++中出现Debug Assertion Failed!错误
- c语言读取文件,这个代码一直报错 debug assertion failed
- C语言Debug Assertion Failed!
(c++ debug assertion failed)帮我调试程序.
分类: 电脑/网络 》》 程序设计 》》 其他编程语言
问题描述:
我的部分代码如下:
BOOL CMy513Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
Add "About..." menu item to system menu.
IDM_ABOUTBOX must be in the system mand range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX 《 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu-》AppendMenu(MF_SEPARATOR);
pSysMenu-》AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
Set the icon for this dialog. The framework does this automatically
when the application’s main window is not a dialog
SetIcon(m_hIcon, TRUE); Set big icon
SetIcon(m_hIcon, FALSE); Set *** all icon
TODO: Add extra initialization here
DWORD dwStyle=GetWindowLong(m_list.GetSafeHwnd(),GWL_STYLE);
dwStyle |= LVS_REPORT;
SetWindowLongA(m_list.GetSafeHwnd(),GWL_STYLE,dwStyle);
出错的地方
m_list.SetExtendedStyle(LVS_EX_HEADERDRAGDROP|LVS_EX_FULLROWSELECT|LVS_EX_TRACKSELECT);
出错的地方
m_list.SetImageList(&ImageList, LVSIL_SMALL);
ShowData();
return TRUE; return TRUE unless you set the focus to a control
}
以上代码已通过编译连接,可当程序运行到 (出错的地方) 时,弹出这样的错误:
Debug Assertion Failed!
Program: E:\vc系统\513\Debug\513.exe
File:afxcmn2.inl
Line:99
for information on how your program can cause an assertion
failure, see th Visual C++ documentation on asses
解析:
不用看,你用appwizard生成的程序,把document/view加上就没问题了
我的这段C语言程序怎么报debug assertion failed错误郁闷~~~~
char *name只是定义了一个指针,没有实际内存空间可用,gets(stu.name)出错;
解决办法有2种:
1. char *name;改为char name;
2. 在gets(stu.name);语句之前添加一句:
stu.name = (char*)malloc(sizeof(char)*40);
缺点是:只能输入40个字符给name,超过40个也会出错。具体多少个字符可自己决定。
C语言新手小白 遇到Debug Assertion Failed问题
这个错误的意思你的54行代码的stream==NULL。
仔细分析下代码。然后加printf调试下看看哪里不对,也可以进行单步调试,看看哪里出错了。
Debug Assertion Failed! 求教高手!C语言
兄弟,你这个程序 是有问题,不过是个小问题,估计是你粗心吧!
我也看好长时间才发现的;你的程序 我 是用vc6.0运行的。结果就发现了这个问题,我在要修改的地方加了这句话,你看下吧“//*************isValid是个函数,你没有在后面加函数的参数啊,应该改这样例如:if(!isValid(a,b))”
希望能帮到你的忙
#include 《stdio.h》
#include 《ctype.h》
#define NUM_ATOMS 8
#define MAX_FORMULA_LEN 20
int isValid(char c);
int findBracketMatch(char c, char matchBracket, int start);
int doBracesMatch(char c);
void printFormula(char c);
int molecularWeight(char c,int);
int main()
{
char c;
char valid_char={’H’,’S’,’O’,’N’,’C’,’B’,’K’,’P’};
int k = 0;
char d = ’ ’;
printf("Please enter the formula, put a ’.’ behind if you want to finish: ");
while(!isValid(c, valid_char))
{
while (d != ’.’)
{
d = toupper(getchar());
c = d;
k++;
}
}
getchar();
if(!doBracesMatch(c))
{
printf("Error in braces..... ");
}
else
isValid(c, valid_char);
printFormula(c);
printf("The molecular weight for the molecule is:%d\n",molecularWeight(c,valid_char,0));
}
int isValid(char c)
{
int i,j,valid=1;
if(isdigit(c))
return 0;
while(!valid && c!=’.’)
{
if(isalpha(c))
{
i=0;
while (c && i 《 NUM_ATOMS)
i++;
valid=(i==NUM_ATOMS) ? 0:1;
}
else
if(c==’{’)
valid=isdigit(c) ? 0:1;
j++;
}
return (valid);
}
int findBracketMatch (char c, char matchBracket, int start)
{
while(c!=matchBracket)
{
if(c==’}’)
return 0;
else
if(c==’(’)
start=findBracketMatch(c, ’)’ , start+1);
else
if(c==’[’)
start=findBracketMatch(c, ’]’, start+1);
else
if(c==’{’)
start=findBracketMatch(c, ’}’, start+1);
start++;
}
return (start);
}
int doBracesMatch(char c)
{
if (findBracketMatch(c, ’.’ ,0)) // start point: find ’.’
return 1;
else
return 0;
}
void printFormula(char c)
{
int i;
if (!isValid) //*************isValid是个函数,你没有在后面加函数的参数啊,应该改这样例如:if(!isValid(a,b))
printf("the formula is invalid, please enter again.:");
else
{
printf("The formula you have inputed is :\n");
for(i=0;c!=’.’;i++)
printf("%c",c);
printf("\n");
}
}
int molecularWeight(char c, int i)
{
int k,weight=0;
int digit;
int atom={1,2,3,4,5,6,7,8};
while(c!=’.’)
{
if(c==’{’)
{
weight+=molecularWeight(c,valid_char,i+1);
break;
}
else
if(isalpha(c))
{
k=0;
while(c && k《8)
k++;
if(isdigit(c))
{
digit=c-’0’;
weight=atom*digit;
}
else
weight+=atom;
}
else
if(c==’}’)
{
if(isdigit(c))
{
digit=c-’0’;
weight*=digit;
}
}
i++;
}
return (weight);
}
初学C语言,运行程序出现debug assertion failed!希望到手帮助解决,谢谢!
小朋友,你的错误是fp = fopen("IN23.DAT", "r") ;这个句子失败了,然后导致fscanf(fp, "%d", &a) ;出错。
你最好写个绝对路径,比如fp = fopen("c:\\IN23.DAT", "r") ,然后吧IN23.DAT这个文件放在c盘下
否则的话你得明确你的程序在执行时的工作路径(不一定是程序所在位置)
然后确保IN23.DAT在工作路径下
设么是工作路径,估计犯这个错误的你目前也不会明白
C++ Debug Assertion Failed!
Debug Assertion Failed!
Program: D:/wyuStud/debug/wyuStud.exe
File: afx.inl
Line:157
调试方法:
首先如果你用的是vc6的话:
1。按F5运行你的程序
2。在出错时,选择“重试”
3。按ALT+7调出“调用栈”窗口
4。双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近。你可以通过查看变量的值来确认。
具体事例:
按照上面的做法:弹出一个对话框:
为什么C语言中的Debug Assertion Failed会出错
关于C语言中的Debug Assertion Failed,在编译和运行时都不会出现错误,但是在执行时会出现错误。发生这种错误的原因可能是:
1、直接释放了一个空指针;
2、一个指针被释放了两次(即第二次释放一个空指针);
3、数组越界:访问了超过数组长度的内存。
以下面一段简单的源程序代码为例:
在执行程序时弹出的“Debug Assertion Failed”错误警告对话框,这种情况大多是指针引起的错误。
下图红框标记的地方,是Distance类析构函数,这里使用了delete。这里其实是不需要的,因为pDist指针是静态分配的内存,当程序运行完后,其内存自动释放,此时使用delete就是删除一个不存在的指针,从而报错,而实际上delete是与new搭配使用的。
扩展资料:
除了指针会引起“Debug Assertion Failed”这种错误,数组越界也会引起这种错误,也就是内存泄漏。
内存泄漏(即Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,从而导致程序运行速度减慢甚至系统崩溃。
无论是C还是C++程序,运行时候的变量主要有三种分配方式:堆分配、栈分配、全局和静态内存分配。而内存泄漏主要是发生在堆内存分配方式中,即“配置了内存后,所有指向该内存的指针都遗失了”。
若缺乏语言这样的垃圾回收机制,这样的内存片就无法归还系统。因为内存泄漏属于程序运行中的问题,无法通过编译识别,所以只能在程序运行过程中来判别和诊断。
参考资料来源:百度百科-内存泄漏
c++中出现Debug Assertion Failed!错误
#include《iostream》
#include《string》
using namespace std;
void fun(string &s)
{
/* nCurPos:当前遍历到的位置 nCount:字符’*’的个数 nTempPos:实际就是nCurPos + nCount */
int nCurPos = 0, nCount = 0, nTempPos = 0;
/* 用于存储遍历到的’*’ */
char *chTemp = new char;
memset(chTemp,0,s.length() + 1);
/* 开始遍历 */
while(nCurPos 《 s.length())
{
/* 遇到’*’ */
if (’*’ == s)
{
/* 可能有多个连续的’*’ */
nTempPos = nCurPos;
do
{
/* 将连续的’*’拷贝出来,并计数 */
memcpy(chTemp + nCount,&s,1);
nCount++;
} while (’*’ == s);
/* 如果获取到的已经是字符串末尾的那段’*’,则表示已经调整完毕,无需继续 */
if (nTempPos == s.length())
{
break;
}
/* 确保有’*’待调整 */
if (’\0’ != *chTemp)
{
/* 获取当前字符串长度 */
int nTempLen = s.length();
/* 将’*’后面的字符串往前挪动 */
s.replace(nCurPos,nTempLen - nCurPos - 1,s,nTempPos,nTempLen - nTempPos);
/* 将前面遍历拷贝出来的’*’放在字符串末尾 */
s.replace(nCurPos + nTempLen - nTempPos,strlen(chTemp) + 1,chTemp,0,strlen(chTemp) + 1);
/* 临时计数器清空,进入下一轮遍历 */
nCount = 0;
memset(chTemp,0,strlen(chTemp));
nCurPos++;
}
else
{
break;
}
}
else
{
/* 当前的字符不是’*’,继续往下走 */
nCurPos++;
}
}
/* 释放内存并将其指向NULL防止内存泄露及野指针 */
delete chTemp;
chTemp = NULL;
}
void main()
{
string s1;
cout《《"请输入仅由*和字母组成的字符串:\n";
cin》》s1;
cout《《"初始字符串为:"《《endl《《s1《《endl;
fun(s1);
cout《《"调序后字符串为:"《《s1《《endl;
}
小哥,你的代码不太好改,就直接用我自己的想法来实现了,应该是可行的,自己测试下吧
c语言读取文件,这个代码一直报错 debug assertion failed
while((s=getchar())==’Y’)//做成循环以方便进行多种结构合金的介电常数计算
{
printf("请输入金的介电常数文件夹名称:");
gets(infile1);
这个gets(infile1);有执行吗?infile1可能没有被赋值,指向某一段内存。
debug assertion failed
这种错误一般是指针有问题。你断点调试一下试试。你这个最外层大while大循环写的也有问题。
还有一个问题,就是,getchar()只会从输入流中取走Y,回车字符还留在输入流,当执行gets()时,不会等待你输入,而是直接把上去Y后面的回车字符取走。(gets()是读取从输入流中读取字符串,遇到回车结束),这样就相当于没有输入就直接结束了infile1为空
C语言Debug Assertion Failed!
#include 《stdio.h》
int main(void)
{
int i, j, n, g;
float a, max, min, total, average, c;
g = 0;
max = 0.0; min = 100.0;
c = 0.0; average = 0.0; total = 0.0;
scanf("%d", &n);
for( i=0; i《n; i++)
{
for( j=0; j《7; j++)
{
scanf("%f", &a);
if( a 》 max)
max = a;
if( a 《 min)
min = a;
total = total + a;
}
average = (total-max-min)/5;
if( average 》 c)
{
c = average;
g = g+1;
}
}
printf("%d\n", g);
return 0;
}
不清楚程序到底想干嘛?只修改了部分,可能的出错的语法。

更多文章:
下载免费java(有什么无病毒、安全的网站可以免费下载java格式手机游戏,且是触屏全屏的)
2026年9月24日 18:00
php7连接mysql数据库操作(PHP7连接mysql数据库方法)
2025年12月29日 00:15
c语言终止程序(C语言~~~如何使程序中途结束、跳出~~~)
2025年6月5日 07:30
flex布局的兼容性(怎么用css使得input的输入框对齐,要写出代码,别百度其他的)
2026年7月27日 12:15
正则表达式支持库(怎样在aardio中使用正则表达式,用哪个函数)
2025年11月17日 05:30
腾讯云数据库管理工具(navicat导入mangodb几百万行传输中断)
2025年12月5日 03:30
java 线程安全(java中为什么说,String是线程安全的)
2026年5月1日 04:00
下载excel教程(windows家庭中文版的怎么下载excel教程)
2026年8月11日 20:15
delphi控制485(如何在delphi中使用海康威视的485口)
2026年9月4日 06:00
tengine windows(天龙八部报错是怎么回事啊 )
2026年2月14日 17:45
ctab化学名称?predictive与predictable的区别
2026年8月14日 15:30














