1 2 3 4 5 6 7 8 9 10 | 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库的作者埋了这个大的坑。
修正办法:
1 2 3 4 5 6 7 8 9 10 11 | void LoadFile(const CString fileName) { static CImage img; img.Destroy(); HRESULT hResult = img.Load(fileName); if (FAILED(hResult)) { ASSERT(0); return algArray; } } |