用DLL封装了ADO操作,在DLL中定义一个类,类中把ADO中常用的三个智能指针对象作为成员。用这个类定义全局对象,因为数据库连接整个程序运行期间有效。主调用程序调用DLL进行数据库操作一切正常,就是当主调用程序退出时报错,内存冲突。要是类定义一个局部对象则没有这样的问题。要是把那三个智能对象从类中拿出作为全局变量问题也是一样的。错误发生在对智能指针的释放上。
解决方案 »
- 一个插件关闭整个网页卡死的问题
- 散分,调查,在床上等你(CSDN)论坛上嫩软多吗?
- [散分求解]Release版调用ProcessShellCommand出错
- 取消edit字数限制(hook)
- 感谢zhoujianhei !
- 虚函数问题,问为什么我这个程序子类的函数和父类的虚函数地址是一样的,那编译器如何区分??
- 请教关于计算机图形算法的几道题
- 在VC中如何将一个对话框和相应的类完全移植到另一个工程中....
- 有关vc中图像输出的问题,知道的哥们请进!
- 树形控件问题
- VC 如何屏蔽编辑框的Ctrl+V加速键
- 【原创】自己写的一款用于注入目标进程中监视其执行的的DLL,配合之前写的DLL注入工具使用。
http://topic.csdn.net/t/20030521/11/1812817.html
"C"_declspec(dllexport) void ADO_Free()
{
theApp.m_pConnection.Release();
theApp.m_pRecordset.Release();
}
因为你使用的是全局变量,全局变量的释放(析构)在程序退出的最后才调用,包括释放com环境之后。
所以你需要手动调用一个释放ADO资源的函数。