定义的地方:
class CSomeClass
{
...
...
Image* m_pImg;
...
...
}
////////////////////////无异常构造的地方:
CSomeClass::CSomeClass()
{
  m_pImg = NULL;
}
///////////////////////无异常使用的地方:
CSomeClass::SomeFunc()
{
  m_pImg = .............//m_pImg的地址值为某值c.
  ..........m_pImg......
}
///////////////////////无异常析构的地方:
CSomeClass::~CSomeClass()
{
  if ( NULL != m_pImg )
  {
    delete m_pImg;////////////////崩了,m_pImg的地址值没变(仍然是c),可是它指向的内存已经无法删除了。
    m_pImg = NULL;
  }
}////////////////高手们,指点指点,谢了//////////////////

解决方案 »

  1.   

    如果前面某个地方已经delete了,或者,你这个是Com组件的话,Release了,再删除就会出错。
      

  2.   

    使用的地方: 
    CSomeClass::SomeFunc() 

      m_pImg = .............//m_pImg的地址值为某值c. 
      ..........m_pImg...... 

    ///////////////////////无异常 
    这里m_pImg=什么啊?
    问题应该就在这个地方
    这里你只是改变了一个m_pImg的值,如果没有new的话
    析构函数中就不用delete
      

  3.   

    m_pImg = Image::FromFile("some.png");程序中还有若干类似的用法,就它一处才崩。
      

  4.   

    我记好 书上好象说,只有 new 的 指针才可以用 delete 运算符
      

  5.   

    pkneteasy 说得没错,我想你应该如下使用:m_pImg->CloseHandle(); m_pImg=NULL; 或类似的方式。
      

  6.   

    No new so no delete
    thinking....
      

  7.   

    查出来了,GDIPLUS引擎在m_pImg被删除以前关闭了。