我在dll中导出一个关于数据显示的对话框CDisplay,在主程序中调用时显示数据一切都正常,但是我关闭这个对话框时就报错了:
debug assertion failed!
file:dbgheap.c
line:1011
expression:_CrtIsValidHeapPointer(pUserData)
这什么意思啊,指针问题?
我在我的dll中用了
_ConnectionPtr m_pconnect;
_RecordsetPtr m_precordset;
我在关闭对话框的时候调用:m_pconnect->Close()
                          m_precordset->Close()
但是没用,还是会报错啊,到底是什么地方不对?  
                          

解决方案 »

  1.   

    指针的错误操作已经破坏了 WIN32 HEAP
      

  2.   

    本来数据显示对话框我是直接放在主程序里的,以前好好的,现在做成dll了就会出现这种问题,我也知道指针有问题,但是按我的程序看不出错在哪里啊。我基本上没有改写原来的程序,就是把它复制导dll工程文件里的
      

  3.   

    你看显示的提示, 完全就是 VC 的 CRT DEBUG 消息. 一定是你程序有问题, 调试运行,定位出错地方!
      

  4.   

    调试的时候定位不了啊,我是按f5的,直接就显示:
    User breakpoint called from code at 0x77f9f9df;
      

  5.   

    会不会是资源的问题,dll无法使用exe的资源(such as .rc )
      

  6.   

    能用的啊。主程序中调用dll运行一切正常,就在关闭dll导出的那个对话框类时出现debug报错
      

  7.   

    试试看把_ConnectionPtr m_pconnect;_RecordsetPtr m_precordset;的调用都注释掉,看看出不出错,如果不出错说明是这两个指针释放的时候出错,我的经验是这两者的释放需要主程序的窗口指针是有效的,所以不能在dll被释放的时候才释放。如果不是这样,我就不知道了。