软件结束后出现的问题

yltao83 2008-04-26 01:20:14
软件以前运行都是正常的,但是昨天加了一段代码,运行都正常,但是软件一旦结束,退出后就会弹出如下的对话框:
Debug Assertion Failed!
Program:D:\MFC\Debug\test.exe
File:cmdtarg.cpp
Line:52
For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts
(Press Retry to debug the application)

添加的代码如下:
double CWinCltView::ADCodeToVoltage(int gain, int polarity, int range, short int temp)
{
double min_voltage, max_voltage;
double scale;
double voltage;

if (polarity==0) /*Bipolar*/
{
if (range==0) /*+-5v*/
{
min_voltage = -5.0;
max_voltage = 5.0;
}
else /*+-10v*/
{
min_voltage = -10.0;
max_voltage = 10.0;
}
}
else /*Unipolar*/
{
min_voltage = 0.0;
max_voltage = 10.0;
}

scale = max_voltage;

if (polarity==0) /*Bipolar*/
{
voltage = ((double)temp / (double)32768)*scale;
}
else /*Unipolar*/
{
voltage = ((double)(temp+32768) / (double)65536)*scale;
}

if (gain>0)
voltage = (voltage / (1 << gain));

return voltage;
}

调用的代码:
float data = (float)ADCodeToVoltage(gain,polarity,range,temp);

我觉得问题不在添加的这段代码上,但是又搞不清楚该如何找到问题的所在,
还请高人指点。
...全文
125 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我跟lz问题一样~我是定义一个cstring类型的变量,不管使用否在关闭程序的时候都是这个错误,郁闷啊~cstring应该不存在释放的问题啊
zdleek 2008-05-08
  • 打赏
  • 举报
回复
大概的可能:
1、非法指针访问,例如数组下标越界或者内存指针使用错误
2、访问已经释放的对象
3、其他逻辑错误导致ASSERT失败,这个很难说
lijianli9 2008-05-07
  • 打赏
  • 举报
回复
CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
if (m_xDispatch.m_vtbl != 0)
((COleDispatchImpl*)&m_xDispatch)->Disconnect();
ASSERT(m_dwRef <= 1);
#endif
#ifdef _AFXDLL
m_pModuleState = NULL;
#endif
}
52行是这样的,ASSERT(m_dwRef <= 1);你用release版本估计是没有问题的.在这个版本assert宏不起作用,但是可能会存在其他的资源问题没有处理好.
lijianli9 2008-05-07
  • 打赏
  • 举报
回复
这种错误都是跟从程序,debug调试解决的,这样也能锻炼一个能的调试程序的能力.
lz试试吧.
zhouzhenyan 2008-05-07
  • 打赏
  • 举报
回复
断言失败,按“Retry”后看调用堆栈,定位到自己写的代码中看是哪儿出错。
帅得不敢出门 2008-05-07
  • 打赏
  • 举报
回复
运行时错误最难搞了
yltao83 2008-05-07
  • 打赏
  • 举报
回复
用的是DEBUG版本。
milaoshu2 2008-04-29
  • 打赏
  • 举报
回复
应该是传入参数的问题
yltao83 2008-04-29
  • 打赏
  • 举报
回复
容错处理?举个例子吧,谢谢
duanhuicen 2008-04-29
  • 打赏
  • 举报
回复
应该是断言失败把,在断言处加上容错处理。
liumang9527 2008-04-29
  • 打赏
  • 举报
回复
软件以前运行都是正常的
------------------------
以前用的是RELESE 还是DEBUG 版本?
菜牛 2008-04-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yltao83 的回复:]
按照Mackz的方法 就进入到MFC的内部代码了,
内功太差看不明白 但是觉得问题不会在这些内部的代码中。
[/Quote]

看调用堆栈啊。
liumang9527 2008-04-28
  • 打赏
  • 举报
回复
使用relese版本
yltao83 2008-04-28
  • 打赏
  • 举报
回复
按照Mackz的方法 就进入到MFC的内部代码了,
内功太差看不明白 但是觉得问题不会在这些内部的代码中。
菜牛 2008-04-26
  • 打赏
  • 举报
回复
Press Retry to debug the application
yltao83 2008-04-26
  • 打赏
  • 举报
回复
关键在于 错误对话框的弹出 只在关闭软件时才出现。
这样的错误怎么调试运行呢?
菜牛 2008-04-26
  • 打赏
  • 举报
回复
调试运行,定位错误。
cnzdgs 2008-04-26
  • 打赏
  • 举报
回复
是不是多线程,主窗口退出时把一些资源释放掉了而线程还要访问?如果是这种情况应该设法让线程先退出。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧