我在删除指针时遇到了读取访问冲突

时间:2016-01-19 09:36:42

标签: c++ mfc

C03View::~C03View()
{

    delete pBrush_;//this causes read access violation.  
}
  

抛出异常:读取访问冲突。
  这 - > pBrush _->是   0xDDDDDDDD。

我的代码中只有一个地方可以初始化此对象:

void C03View::OnInitialUpdate()
{
    CScrollView::OnInitialUpdate();
    pRenderTarget_ = GetRenderTarget();
    pBrush_ = new CD2DSolidColorBrush(GetRenderTarget(),   
                                           D2D1::ColorF(D2D1::ColorF::Blue));
}

这个项目是一个MFC项目。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:2)

可能的情况:

  1. 构建C03View时未初始化pBrusch_且从未分配(OnInitialUpdate从未被调出)
  2. pBrusch_由于内存损坏而被覆盖
  3. 之前已删除pBrusch_,但之后未将其设置为NULL
  4. pBrusch_在自己的析构函数中崩溃
  5. C03View的对象已损坏或未分配,但调用了析构函数 ...