在List的列表框中显示了有几万条记录,当退出含有此列表框的对话框时,发现像死机界面不动了,后来发现是退出时,列表框变量在释放内存占用时间,几万个记录释放内存的时间需要一两分钟,请问各位高手如何快速的释放内存并缩短时间?谢谢

解决方案 »

  1.   

    没有!就是在释放资源的时耗时,List我用的第三方的类,单步运行的时候,发现
    void CSortListCtrl::FreeItemMemory( const int iItem )
    {
    ItemData* pid = reinterpret_cast<ItemData*>( CListCtrl::GetItemData( iItem ) ); LPTSTR* arrpsz = pid->arrpsz; for( int i = 0; i < m_iNumColumns; i++ )
    {
    delete[] arrpsz[ i ];
    }
    delete[] pid->crText;
    delete[] pid->crBak;
    delete[] arrpsz;
    delete pid;
    VERIFY( CListCtrl::SetItemData( iItem, NULL ) );
    }
    调用这个函数很耗时
      

  2.   

    这样啊!因为我的设备是检测产品疲劳耐久试验的数据,通常最多的有100万记录,我用对话框模式的,在主对话框中显示时,没有遇到这种情况,但在子对话框中使用时遇到了,尤其退出子对话框的时候就反应很慢。请问happyparrot用没有办法改变这种现象。或者说不用此类会不会遇到相同的情况啊?
      

  3.   

    关闭时先将列表清空,再delete不行吗?