使用duilib库写的界面,listUI加载一定数量的子控件,删除全部再添加这样的操作多次后,项目出现崩溃。
不知道原因是啥啊?难道是list控件RemoveAll没删除干净导致的添加失败?

解决方案 »

  1.   

    崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
      

  2.   

    这个有可能是第三方库的bug,最好是自己避免
      

  3.   

    如前面所说,要跟踪一下,是否有内存泄露,排除之后,再确定是否是lib的bug。
      

  4.   

    duilib,list控件bug,就是在于之前的wm_mousemove消息有冲突,需要清空m_PaintManager加载的相关信息,如:
    void CDuiMainWnd::ClearPaintManagerLog()
    {
        int count = m_pList->GetCount();
        if (count <= 0)
        {
            return;
        }
        for (int i = 0; i < count;++i)
        {
            m_PaintManager.RemoveMouseLeaveNeeded(m_pList->GetItemAt(i));
        }
      

  5.   

    m_pList->SetDelayedDestroy(false);
    m_pList->RemoveAll();
    这是最简单的,之前没看懂源码
      

  6.   


    使用了这个m_pList->SetDelayedDestroy(false);后,会出现其他异常
      

  7.   

    bool ViewForm::RemoveClass1(ui::EventArgs* msg)
    {
    std::wstring name = msg->pSender->GetName();
    this->btn_stop1_;
    this->phone1_;
    }为什么会出错呀??