大量調用函數,裏CImage局部變量 並使用Load函數,會導致大量的線程退出現象解決辦法

void LoadFile(const CString fileName)
{
    CImage img;
    HRESULT hResult = img.Load(fileName);
    if (FAILED(hResult))
    {
        ASSERT(0);
        return algArray;
    }
}

這個函數放在線程裏,反覆調用,發現出現大量線程退出線程

後來看CImage源碼發現,如果發現析構CImage對象時,會有個static變量統計對象個數,當個數爲0時,則析構GDI+對象

我也是醉了,這個MFC庫的作者埋了這個大的坑。

 

修正辦法:

void LoadFile(const CString fileName)
{
    static CImage img;
    img.Destroy();
    HRESULT hResult = img.Load(fileName);
    if (FAILED(hResult))
    {
        ASSERT(0);
        return algArray;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章