Men_In_Black

Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Exception_Granted Цитата: В программе обнаружено место где происходит постоянное увеличение GDI объэктов | Спрашивается, зачем чего-то там логить, если уже найдено место, где есть утечка? Может быть имеет смысл не мудрить, а привести кусок кода, где жрутся ресурсы? В качестве общей рекомендации, могу лишь сказать, что чаще всего к утеканию памяти и другим проблемам ведут две вещи: 1. Заселектили новый объект GDI, потом забыли вернуть старый. Т.е., например, правильно делать так: Код: CFont *pOldFont = pDC->SelectObject(GetFont()); ... pDC->SelectObject(pOldFont); | Вообще-то, я не совсем уверен, что при невозврате возникнет именно утечка памяти (возможно, кто-то меня поправит). Но то, что делать так нехорошо и что от этого могут быть проблемы - общеизвестный факт. Например, где-нибудь неожиданно вместо нормального шрифта вылезет жирный и пойди найди, в каком месте ошибка... 2. Захватили контекст, потом забыли его "отпустить". Должно быть так: Код: CDC *pDC = GetDC(); ... ReleaseDC(pDC); | В последнем случае (но без вызова ReleaseDC) ресурсы могут утекать прямо-таки с фантастической скоростью... |