最近帮人解决内存泄漏问题,发现两个容易忽视的内存泄漏问题。
其一是使用GetDC()必须释放,如CDC *pDC = pWnd>GetDC();
pWnd->ReleaseDC(pDC);不释放的会发现内存占用一直增加,知道崩溃。
其二是使用vector的话,容易出现内存泄漏,因为vector内部实现的
数据结构是动态数组,内存表现为当当前容量不满足插入数据大小时,
会先拷贝旧vector里的数据,再对旧vector进行二倍size增长,生成一个全新的vector,
再把拷贝出的旧数据存入新的vector,然后在新的已拷贝旧数据的vector的尾部进行插入操作,
这样的结果就是一个循环线程中vector无限扩容,内存一直增加,直到奔溃。
解决办法是在线程开启时对vector进行vector.clear()操作。