• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于Com中的内存泄漏

关于Com中的内存泄漏

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了内存泄漏检测工具,内存泄漏,内存泄漏检测,内存泄漏及解决方法,android 内存泄漏等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于Com中的内存泄漏
描述:

通过ATL Com模板建立了一个基于服务(Server Exe)的Com程序,在该程序中,加入了几个类(Generic Class),并且在启动该服务的时候,new 了几个类对象,在类的析构函数中进行了Delete,可以在进行调试的时候,当通过:任务管理器/进程 关闭该Com服务程序的时候,却不能调用这些类的析构函数,请问:new 的内存是否被释放


解决方案1:

可能释放可能没释放,要视你所选择的C运行时期库是否是动态连接的。如果静态连接,则是释放了的,不过不是通过调用你的析构函数中的delete,而是系统自己释放的。动态连接则就是真正的内存泄露。
因为你的这种情况只是所谓的内存泄露,不是资源泄露,内存泄露是指当泄露内存的进程未结束时才有所谓的泄露,当进程结束时,它所分配的所有内存都会释放(资源不一定,要视引用记数而定)。但这里所谓的内存也只是进程的堆(其实仍是个资源)。由于你使用new,将不会在进程的默认堆上进行分配,而是在C运行时期库初始化时申请的一个堆上进行分配。因此,当进程结束时,将不会释放C运行时期库申请的堆,只有C运行时期库被卸载时,才会释放你所分配的内存。
当你的C运行时期库静态连接时,进程结束时,C运行时期库也将卸载,所以将会释放。当动态连接时,连接的是MSVCRT.DLL,所以只有当MSVCRT.DLL卸载时(即如果你的进程结束时还有其他进程使用C运行时期库,那么将不会卸载MSVCRT.DLL),你分配的内存才会释放。
至于C运行时期库的指定(静态连接还是动态连接,多线程还是单线程),通过编译器选项指定,VC6中,在Project/Settings,VC.net中,在工程的属性对话框中


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 写了这个测试,为什么内存泄露很严重,好像IWebBrowser2没有释放
  • 十万火急,AxWebBrowser内存泄露,如何处理????
  • 内存泄露问题
  • GlobalAlloc内存泄露检测
  • 会内存泄漏吗?
  • 关于内存泄漏
  • 内存泄露了,该怎么办?
  • 看里面,是否会出现内存泄漏
  • 这样怎么会内存泄露?
  • 内存泄漏问题,大家看看吧,在线等

相关文章

  • 2017-06-04 如何利用widnowsmediaPlayer控件的功能,将播放内容显示在其他控件上?
  • 2017-06-05 内存映射文件似乎有数目限制,如何解决
  • 2017-06-05 不能调用DLL中带参数的函数问题
  • 2017-06-05 是否认为ODBC有难题--300分相送??
  • 2017-06-05 关于MFC扩展动态链接库中的对话框资源问题!
  • 2017-06-05 为什么C++中,线程控制函数往往是静态成员函数?
  • 2017-06-04 求一本COM的书籍
  • 2017-06-05 求教两个问题---急!
  • 2017-06-04 消息处理函数怎么从vc6转到vc2005?
  • 2017-06-04 100分向高手请教:用BHO开发浏览器工具条的思路

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • DLL中结构变量的问题
    • VC开发的ActiveX控件Delphi7下使用时一些属性看不到。
    • 关于word对象嵌入得请对mfcColeControlModle类高手进来
    • 关于写文件的问题………………………………
    • 全局钩子问题求助?
    • 请教microsofttabbeddialogcontrol60的使用方法。
    • 请问,COM对象和调用方之间如何传递集合信息?
    • 在windowsxp中有没有工具能看到各个线程占用CPU等资源的详细情况啊??
    • 当HOOK住某个游戏的DirectDrawCreateEx调用后,接下来如何往他的屏幕上写东西
    • 求LISTVIEW控件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有