2008-12-30 15:40 定义了Manager作为全局变量,其中包含一个_ConnectionPtr和一个_RecordsetPtr成员变量. 1 楼boilingwater() 回复于 2003-02-14 16:24:44 得分 0对了,中间执行的操作都很正常.Top 2 楼Aizz(Nova) 回复于 2003-02-14 16:40:46 得分 0试试3的顺序反一下: 3 楼boilingwater() 回复于 2003-02-14 17:22:03 得分 0Aizz(Nova),我试过了,还是不行.Top 4 楼boilingwater() 回复于 2003-02-14 17:25:06 得分 0这次我连open都没有,只有createinstance,析构时还出错Top 5 楼Aizz(Nova) 回复于 2003-02-14 17:29:52 得分 0没遇见过,错误信息是什么?Top 6 楼boilingwater() 回复于 2003-02-14 17:31:09 得分 0抱歉,先离开,明天晚上再来 7 楼samyoung(sam) 回复于 2003-02-14 17:34:17 得分 0_ConnectionPtr不需要每次用了都close,这个只需要在程序结束的时候close一下就行了,推荐这样 8 楼boilingwater() 回复于 2003-02-17 14:10:06 得分 0_ConnectionPtr我是只close了一次. 9 楼boilingwater() 回复于 2003-02-17 15:14:51 得分 0那位高手能给我讲解一下ado的connect和recordset的使用过程中,内存是如何分配的?哪里申请,哪里释放,哪里设为NULL?Top 10 楼hany3000(倾城一片) 回复于 2003-02-17 17:06:39 得分 0好像不要用哪个release函数,我用哪个也出错的, 11 楼boilingwater() 回复于 2003-02-17 17:10:18 得分 0好像也不需要=NULL吧?Top 12 楼zzyx(菜农) 回复于 2003-02-17 17:28:27 得分 0COM组件线程的公寓模型问题? 13 楼boilingwater() 回复于 2003-02-18 09:07:25 得分 0拜托 zzyx(菜农)再说的详细点好吗? 14 楼Aizz(Nova) 回复于 2003-02-18 11:28:17 得分 0>>放置的位置不同,结果就会不同. 15 楼Aizz(Nova) 回复于 2003-02-18 15:35:49 得分 0上面“CreateInstance()的时候分配内存”这句应该是“建立接口的引用”。Top 16 楼zzyx(菜农) 回复于 2003-02-18 19:50:40 得分 0我还是有点怀疑你有跨线程的情况。 17 楼boilingwater() 回复于 2003-02-19 09:46:26 得分 0哪我的指针不会超出作用域,除非推出程序.因为它是在一个全局变量里. 18 楼lwg7603(刑满释放人员) 回复于 2003-02-19 10:18:41 得分 50COM调用越界了(即在CoUninitialize()调用完成后,再调用COM的方法)因为全局变量的析构在最
后才调用!检查你的
CoInitialize(NULL)和CoUninitialize()调用,你在调用CoUninitialize()的位置设断点,在
~CMyParam()内部(任何语句处)也设断点.然后推出程序,看看程序先运行到哪个断点处就明白了~~~ 19 楼lwg7603(刑满释放人员) 回复于 2003-02-19 11:09:42 得分 0解决方法:修改程序结构 ,不要在全局对象中使用智能指针~,,或在CoUninitialize()调用之前,调用m_pLRecordset.Release(),m_pLConnect-> 20 楼boilingwater() 回复于 2003-02-19 12:12:55 得分 0我加了release也不行啊. 21 楼lwg7603(刑满释放人员) 回复于 2003-02-19 13:15:35 得分 0在CxxxAPP类的ExitInstance函数中调用release试试?Top 22 楼zzyx(菜农) 回复于 2003-02-19 14:01:51 得分 20看来 lwg7603(刑满释放人员) 是正确。 23 楼Aizz(Nova) 回复于 2003-02-19 15:51:35 得分 30我是在类的构造函数CoInitialize(),析构函数CoUninitialize(),并且没用Release(),没有出现错误(Win2000环境)。另外,全局变量肯定在InitInstance()之前构造,而在ExitInstance()之后析构,所以在上面两个函数里面初始释放COM环境应该 是不行的;就算在析构函数中CoUninitialize(),一样也是在接口指针释放之前(除非显示调用Release())释放COM环境,庆幸的是 在2000中这样没什么问题(不知道98会不会报错)。 (###) |
|