我调用过CImage类的程序退出后都会有一个进程留在内存里,请问各位高手怎么解决?

解决方案 »

  1.   

    你是用new创建的CImage对象吗?
      

  2.   

    MFC中有好象没有这个类,你用的是别人做的类吧?如果是这样,查一下他在这个类里做了些什么,是不是启动了另一个进程。
      

  3.   

    如果你没有用new的话,在你的程序退出的时候调用一下
    m_ImageList.Delete();来释放资源如果你的ImageList是new出来的,在程序退出的时候
    if(m_pImageList){
        delete m_pImageList;
        m_pImageList = NULL;
    }
    来释放资源!
      

  4.   

    是CImage类,MFC7.0 中的图像类,不是CImageList。
      

  5.   

    先释放CImage的对象从内存中释放掉,在退出程序!
      

  6.   

    调用的部分代码如下:
      
             CImage ImageRead;         // 打开图像,并判断是否成功
    if (ImageRead.Load(LPCTSTR(Imgfile.GetFilePath()))!=S_OK)
    return -11; // 图像打开失败 // 如果图像格式不符则返回
    if (!ImageRead.IsDIBSection())
    return -12; // 图像格式不符 // 获取图像颜色数
    ColorNum=ImageRead.GetMaxColorTableEntries();

    // 如果图像不是单色的则返回 // 此处为OCR扫描使用,如果不限于此用途,此判断可以去掉
    if (ColorNum!=2)
    return -13; // 图像不是单色的 // 根据图像颜色数创建颜色表
    ColorTable=new RGBQUAD[ColorNum]; // 获取颜色表内容
    ImageRead.GetColorTable(0,ColorNum,ColorTable);
             // 将文件格式解码成Bitmap
    pBmp=CBitmap::FromHandle(ImageRead.Detach());         ImageRead.Destroy();
      

  7.   

    如果你用new的话那是进堆,要delete
      

  8.   

    我没有用new啊,就是声明CImage ImageRead;
      

  9.   

    ColorTable=new RGBQUAD[ColorNum];
    用到了堆.
      

  10.   

    哦,那是部分代码
    ColorTable在后面delete了
    问题是出现在CImage上,不用CImage就没问题。
    好像只有MFC7.0有这个问题,MFC7.1就没事,
    问题是在MFC7.0中怎么解决?
    请教各位高手了!!
      

  11.   

    hardstudylulin(思过崖):没搞错吧??!!
    这有恭喜的吗?
    我都快跳楼了!!
      

  12.   

    问题的原因找到了,我在微软的网站上找到了CImage的说明,它说如果要释放的话需要调用CImage::ReleaseGDIPlus函数。但是此函数是在MFC7.1中提供的,并不在MFC7.0中提供,而我的版本是MFC7.0,我该怎么办啊?
    各位高手救命啊!!