断言错误( Debug Assertion Failed )的疑惑

小字 2009-06-11 01:01:49

void Mydlg::OnCancel()
{
OnCancel();//删除前面默认的 CDialog:: 就不再报断言错误了
}


这是为什么呢?

这个对话框里包含两个主要的控件Adodc和Ado Datalist,连接数据库在前者属性里设置好的,没有额外的Code.

我想应该不是没有关闭数据库的原因,毕竟问题的解决看上去跟数据库操作无关吧。

谁能详细说一下这个断言错误呢?

另外想请教的是:是否这种连接数据库的方法不用写断开连接的语言,直接在离开按钮里写“OnCancel();”就可以了呢?这样做是不是会造成内存泄露;那么合理的写法又是如何?
...全文
231 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
singsongs 2009-06-18
  • 打赏
  • 举报
回复
大家都很幽默,呵呵
光宇广贞 2009-06-14
  • 打赏
  • 举报
回复
好像这是一个无限递归……
huqinglu123 2009-06-14
  • 打赏
  • 举报
回复
错误肯定不在
void Mydlg::OnCancel()
{
OnCancel();//删除前面默认的 CDialog:: 就不再报断言错误了
}
很明显,就前面说的递归到你结束程序为止

小字 2009-06-14
  • 打赏
  • 举报
回复
还是没有解决问题 继续等 应该根据10楼的信息来思考解答方法吧?检查了程序 应该不存在指针非法操作的问题
daturasea 2009-06-11
  • 打赏
  • 举报
回复
最近在使用MFC编写一个应用程序,其中也遇到了断言错误,一般断言错误都是由于错误的使用指针导致,譬如指针为空就使用,你可以看断言错误提示框中具体显示的内容,然后找到你的断言错误是什么。
你的问题有可能是关闭对话框是别处还在使用这个对话框句柄,去掉CDdialog后可能要经过一段时间才立刻关闭当前画面。
  • 打赏
  • 举报
回复
调用非法的指针了
小字 2009-06-11
  • 打赏
  • 举报
回复
单步调试到}时报错,此时Debug信息为:
First-chance exception in Highspeed.exe (MFC42D.DLL): 0xC0000005: Access Violation.

我点Retry,程序定位到:occsite.cpp 2727,且出现的第一条Debug信息为:
ATL: Binding entry 0 failed. Status: 2
bragi523 2009-06-11
  • 打赏
  • 举报
回复
关闭之前有事情没做完就这样了
zhouzhipen 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gao_zilai 的回复:]
OnCancel();//删除前面默认的 CDialog:: 理论上就陷入死循环了。

问题可能是出在你连接数据库或者断开数据库的时候,检查一下,确认连接的情况下,在断开。
另外,初始化多次也会出现这热错误
[/Quote]


没错,CDialog::删除了,就陷入死递归。
小字 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gao_zilai 的回复:]
OnCancel();//删除前面默认的 CDialog:: 理论上就陷入死循环了。

问题可能是出在你连接数据库或者断开数据库的时候,检查一下,确认连接的情况下,在断开。
另外,初始化多次也会出现这热错误
[/Quote]

确实 刚才检查了一下,点“返回”按钮,整个程序都关闭了。这样问题还是没有解决。

现在的问题应该是不知道怎样关闭数据库连接。
这个类里只使用了两个变量:m_adodc和m_datalist分别对应两个控件
小字 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 saiyaman5 的回复:]
调试一下,看看在哪里弹出的断言不就行了吗,查看堆栈
[/Quote]
不知道怎么查看堆栈啊 求教!
saiyaman5 2009-06-11
  • 打赏
  • 举报
回复
调试一下,看看在哪里弹出的断言不就行了吗,查看堆栈

码侬 2009-06-11
  • 打赏
  • 举报
回复
不过这样子应该会有个头的,等程序关闭了,也就到头了。
NineheadedBird 2009-06-11
  • 打赏
  • 举报
回复
断言 断在那里你也不打出来 谁知道你错在什么地方了啊
连接用完 要关闭 要不占用资源 最终耗尽
Ryanwen 2009-06-11
  • 打赏
  • 举报
回复
这样递归到何时是个头啊
码侬 2009-06-11
  • 打赏
  • 举报
回复
OnCancel();//删除前面默认的 CDialog:: 理论上就陷入死循环了。

问题可能是出在你连接数据库或者断开数据库的时候,检查一下,确认连接的情况下,在断开。
另外,初始化多次也会出现这热错误

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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