软件以前运行都是正常的,但是昨天加了一段代码,运行都正常,但是软件一旦结束,退出后就会弹出如下的对话框:
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);我觉得问题不在添加的这段代码上,但是又搞不清楚该如何找到问题的所在,
还请高人指点。
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);我觉得问题不在添加的这段代码上,但是又搞不清楚该如何找到问题的所在,
还请高人指点。
解决方案 »
- 如何在指定路径下新建一个文件夹?怎么实现像VC++新建一个工程的作用
- 如何调用类函数?抢分拉
- CFileDialog的API函数是什么?
- 请大家帮帮我~~~~~~60分
- listctrl上item显示图标的问题,朋友们帮忙看看。
- 能不能只更新文档的某一个视图(能找到),不用UpdataAllViews()?
- 请问md5可以用来对口令加密和解密吗?
- 求救!!!Socket同步问题:为什么数据总是接收不全?(在线等待)
- 请问一个高手可能不屑一顾的问题,请帮忙看看,THANKS!
- 为什么VC中也有代沟,爷爷不认孙子,孙子不买爷爷的帐,只能父子相连。
- opencv 使用cvcam操纵视频流如何保存图像和视频片断
- 怎样设置默认按钮?
内功太差看不明白 但是觉得问题不会在这些内部的代码中。
------------------------
以前用的是RELESE 还是DEBUG 版本?
lz试试吧.
{
#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宏不起作用,但是可能会存在其他的资源问题没有处理好.
1、非法指针访问,例如数组下标越界或者内存指针使用错误
2、访问已经释放的对象
3、其他逻辑错误导致ASSERT失败,这个很难说