我的程序现在有这样一个调用关系:("->"表示通过.lib隐式调用)[exe] -> [ext dll 1] -> [ext dll 2]
| |^
---------------------------这三个模块里分别都含有一些资源,但是很少。主要是版本信息,还有几个ICON。当用_MBCS编译运行,退出时,Output窗口只有一堆DLL加载卸载等正常信息。
当用_UNICODE编译运行,退出时,Output窗口显示出怒长一串“Memory leak detected”!我上面说的“运行”是按F5叫起程序,但不做任何事,马上再关掉。并且这些模块的入口点函数里,除了向导生成的东东外,也没做任何事。换句话说,我能保证这么内存泄漏 不是 由于诸如自己忘记释放内存等引起的。小弟特来请教一下诸位师长前辈,这是怎么一回事?我看到MFC向导在生成MFC扩展DLL的入口点函数里,在“new CDynLinkLibrary(xxxxDLL);”一句的上面提到:如果扩展dll不是直接从exe调用,则要怎么怎么着,我也试着做了,没有效果。而且在内存泄漏信息里,竟然还有没被删除的那个CDynLinkLibrary对象!我跟踪了一下,见识了那个纷繁芜杂的“Resource List”,不过看到CDynLinkLibrary对象也被delete了啊?怎么搞的啊?为啥专门_UNICODE版会这样哩?
| |^
---------------------------这三个模块里分别都含有一些资源,但是很少。主要是版本信息,还有几个ICON。当用_MBCS编译运行,退出时,Output窗口只有一堆DLL加载卸载等正常信息。
当用_UNICODE编译运行,退出时,Output窗口显示出怒长一串“Memory leak detected”!我上面说的“运行”是按F5叫起程序,但不做任何事,马上再关掉。并且这些模块的入口点函数里,除了向导生成的东东外,也没做任何事。换句话说,我能保证这么内存泄漏 不是 由于诸如自己忘记释放内存等引起的。小弟特来请教一下诸位师长前辈,这是怎么一回事?我看到MFC向导在生成MFC扩展DLL的入口点函数里,在“new CDynLinkLibrary(xxxxDLL);”一句的上面提到:如果扩展dll不是直接从exe调用,则要怎么怎么着,我也试着做了,没有效果。而且在内存泄漏信息里,竟然还有没被删除的那个CDynLinkLibrary对象!我跟踪了一下,见识了那个纷繁芜杂的“Resource List”,不过看到CDynLinkLibrary对象也被delete了啊?怎么搞的啊?为啥专门_UNICODE版会这样哩?
解决方案 »
- Windows CE 系统进程外组件应用开发
- 请教使用JRTP服务端监听接收数据的问题。
- 使用Recordset的Open方法获得符合某条件的记录集合,能不能继续使用该方法获得符合另一条件的子集合?
- 有朋友在VC6.0中用过Xvid吗,可以帮助下我吗
- built的时候出现以下问题,请问是什么造成的?
- adodc与datagrid配合的问题
- 加密软件将文件等加密后,密码都放在什么地方了
- CListCtrl 为什么没有ItemSelectedChanged消息呀?????
- 20分试探性求助!有必要的话将新开帖送200分。
- 文凭真的那么重要?
- WinXP Pro+VC6 编译说找不到CreateJobObject()函数问题求教!
- 如何在A窗体中处理子窗体某个控件的消息/事件?
我说明白了吗?我知道这样设计有些糟糕。但目前暂时只能如此。
给你一段代码,供参考:
#ifdef _DEBUG
#pragma comment(lib,"\\EPID2000\\lib_debug\\CJ60Libd.lib")
#else
#pragma comment(lib,"\\EPID2000\\lib\\CJ60Lib.lib")
#endif
我的意思就是UNICODE分配的内存,ANSI函数释放的,肯定不行,就算是系统的API和库函数,控制不好的话,也是有问题的。