Re[5]: Диалоговое окно и утечка памяти.
От: MAPCUAHUH  
Дата: 22.02.05 10:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, kmn, Вы писали:


kmn>>Здравствуйте, Аноним, Вы писали:


А>>>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>>>Здравствуйте, <Аноним>, Вы писали:



kmn>>И счего Вы взяли, что под 2K нет утечки?


kmn>>насчет того, что нет delete Вам уже сказали.

kmn>>хочу лишь добавить, что здесь и new не нужен.
kmn>>
kmn>>void CPreviewDialog::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
kmn>>{
kmn>>    if( lpDrawItemStruct->itemAction & ODA_DRAWENTIRE )
kmn>>    {
kmn>>          CDC * pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
kmn>>          ASSERT_VALID (pDC);

kmn>>        CDC memDC;
kmn>>          memDC.CreateCompatibleDC(pDC);
kmn>>          bmpBig.SetBitmapBits(BUFFER_SIZE, ulBuf);
kmn>>        CBitmap* pOldBitmap =(CBitmap*) memDC.SelectObject(bmpBig);
kmn>>        ::BitBlt(lpDrawItemStruct->hDC,0,0, IMAGE_WIDTH,IMAGE_HEGTH, memDC, 0, 0, SRCCOPY);
kmn>>        memDC.SelectObject(pOldBitmap);
kmn>>        memDC.DeleteDC();
kmn>>    }
kmn>>}
kmn>>





А>Вот если сделать так :


А>
А> CDC * pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
А>         ASSERT_VALID (pDC);

А>


А>то тогда вообще ничего не рисуется.

А>Насчет того , что нет утечки под Win2000 , видно системным монитром.

Win2000 Когда запускает программу выделяет ей куссок памяти определённого размера.
В результате программа работает в своём адресном пространстве.В нем же выделяет память и оператор new.
Когда прога завершает работу ОС удаляет эту область памяти. В результате утечка происходит только во время выполнения программы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.