监听用的线程中用阻塞方式,即循环调用revfrom。
问题在于最后在主线程中调用WSACleanup(),监听线程阻塞在revfrom,但是并没有返回-1(应该返回-1,然后我才可以正常退出线程),而是直接跳出了监听线程,遭成了内存泄露,约2*108bytes.
将监听线程封装到dll中可以解决此问题(主程序基本没有其他复杂的模块);实际应用中,主程序还需要开启另外几个线程(与网络通信无关,用来处理监听到的数据),以及一个ADO访问Oracle数据库的模块。监听线程一旦与其他线程或数据库模块一起运新,会再次出现内存泄露。
对其原因很不理解,请有这方面经验的兄弟姐妹指点一二。谢谢!