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

I'm getting read access violation while deleting pointer

本文关键字:遇到 读取 访问冲突 指针 删除      更新时间:2023-10-16
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. 构造 C03View 时未初始化pBrusch_,也从未分配(从未调用 OnInitialUpdate)
  2. 由于内存损坏,pBrusch_被覆盖
  3. 之前已删除pBrusch_,但之后未设置为 NULL
  4. pBrusch_在自己的析构函数中崩溃
  5. C03View的对象已损坏或未分配,但已调用析构函数...