Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Вниз

Утечка памяти в CreateDIBSection   Найти похожие ветки 

 
Я   (2011-11-18 15:06) [0]

Доброго времени суток. Помогите плз найти ошибки.

typedef unsigned char byteW,*PbyteW;

       RECT R;
       GetWindowRect(Wnd, &R);
       int W = R.right - R.left;
       int H = R.bottom - R.top;

       //////////////////////////////////////

       BITMAPINFO* bm_info = new BITMAPINFO;
       bm_info->bmiHeader.biSize = 40;
       bm_info->bmiHeader.biSizeImage = 0;
       bm_info->bmiHeader.biWidth = W;
       bm_info->bmiHeader.biHeight = -H;
       bm_info->bmiHeader.biPlanes = 1;
       bm_info->bmiHeader.biBitCount = 32;
       bm_info->bmiHeader.biCompression = BI_RGB;

       ////////////////////////////////////////////

       HDC DC = GetWindowDC(Wnd);
       HDC memDC = CreateCompatibleDC(DC);

       PbyteW ptrbf = new byteW [W* H*4];

       HBITMAP bm = CreateDIBSection(memDC, bm_info, DIB_RGB_COLORS, (void**)&ptrbf, NULL, NULL);
       //   HBITMAP bm = CreateCompatibleBitmap(DC, W, H);

       HBITMAP oldBM = (HBITMAP) SelectObject(memDC, bm);
       BitBlt(memDC, 0,0, W, H, DC, 0,0, SRCCOPY);
       SelectObject(memDC, oldBM);
       DeleteDC(memDC);
       DeleteObject(oldBM);
       ReleaseDC(Wnd, DC);

       delete[] ptrbf;


 
Rouse_ ©   (2011-11-18 15:54) [1]

иь удалять кто будет?


 
Rouse_ ©   (2011-11-18 15:57) [2]

блин, пунтосвитчер... "BM" имелось ввиду


 
Я   (2011-11-18 15:58) [3]


> иь удалять кто будет?


Уточните плз какой ресурс я не освободил


 
MBo ©   (2011-11-18 15:59) [4]

К утечке отношения не имеет, но вот так поаккуратнее будет:
bm_info->bmiHeader.biSize = sizeof(bm_info)


 
Я   (2011-11-18 16:02) [5]

А ну да я это просто забыл

 DeleteObject(bm);

перед

ReleaseDC(Wnd, DC);

и все равно растет


 
MBo ©   (2011-11-18 16:23) [6]

а bm_info тоже не удаляется?


 
Я   (2011-11-18 16:34) [7]

delete[] bm_info;

Так же не решает проблемы. Эти две операции у меня в "разрабатываемом" коде были. Это я в сабжевый "локализованный" забыл их перенести. Sorry


 
Омлет ©   (2011-11-18 17:03) [8]

Может, еще что-то забыл перенести?


 
Я   (2011-11-18 17:07) [9]

Уже проверил. Вроде как нет :)


 
Rouse_ ©   (2011-11-18 17:37) [10]

Выпимши правда уже, но: (void**)&ptrbf
Це ж не указатель на адрес буфера, а указатель на указатель - не?


 
Rouse_ ©   (2011-11-18 17:49) [11]

Не, бред какой-то получается...
если bm_info и bm удаляешь утечек ни по памяти ни по GDI ресурсам не видно...


 
Я   (2011-11-19 09:49) [12]

Собсно нашел робочий пример. Вот он (с небольшой редакцией)

HBITMAP hbitmap;
       HGDIOBJ hold_bitmap;
       BITMAPINFO bmi;
       VOID *pvbits;

       RECT r;
       GetClientRect(Wnd, &r);

       HDC hdc = GetDC(Wnd);
       int h = (r.bottom - r.top);
       int w = r.right - r.left;

       bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
       bmi.bmiHeader.biHeight = - h;
       bmi.bmiHeader.biWidth =  w;
       bmi.bmiHeader.biPlanes = 1;
       bmi.bmiHeader.biBitCount = 32;
       bmi.bmiHeader.biCompression = BI_RGB;
       bmi.bmiHeader.biSizeImage = bmi.bmiHeader.biHeight * bmi.bmiHeader.biWidth * 4;

       HDC hdc2 = CreateCompatibleDC(NULL);

       hbitmap = CreateDIBSection(NULL,&bmi,DIB_RGB_COLORS,&pvbits,NULL,0x0);
       hold_bitmap = SelectObject(hdc2,hbitmap);

       BitBlt(hdc2, 0,0, w, h,hdc, 0,0, SRCCOPY);

       for(int y=0; y<=h*w; y++)
       {
        /////  Тут копируем в отдельный массив
       //    PRGBAPixel(buff.buffer)[y]=PRGBAPixel(pvbits)[y];

       };

       SelectObject(hdc2, hold_bitmap);
       DeleteObject(hbitmap);
       ReleaseDC(NULL,hdc2);



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
2-1321645351
dimsar
2011-11-18 23:42
2012.02.26
установка дополнительных компонентов


15-1320848351
xss22
2011-11-09 18:19
2012.02.26
Удаление элемента со сдвигом из массива array of record


2-1321257874
igorium
2011-11-14 12:04
2012.02.26
Загрузка в динамический Image часть изображения из файла


15-1320352202
Юрий
2011-11-03 23:30
2012.02.26
С днем рождения ! 4 ноября 2011 пятница


15-1320820793
stas
2011-11-09 10:39
2012.02.26
TwebBrowser и Socks, реально?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский