![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Понеслось.Скоро буду возвращать прогу!Заказчик зол.
У меня на экран выводится картинка ,читаемая из файла. После 2 х часов работы,по словам заказчика картинка не грузится(не отображается) Ну я начил тестит.Сделал прогу.Задал таймер и начал выводит.Оказалось картинка весом 332Кб пропадает после 142 загрузки.Весом 93Кб после 543 раза.Что делать? Вот код
Я слаб в функциях АПИ.Помогите.Ничего не могу найти.Где утечка?Вроде явного выделения памяти нет... Делал уже и свой класс.В Функции рисования создавал обьект.Из выхода все ж должно было уничтожится вместе с обьектом. Хелп! Да ,еще при загрузке в таймере,при тесте,жестко "летит" оперативка. Добавлено @ 16:49 Забыл библиотеки #include <olectl.h> and <ole2.h> -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
GlobalAlloc - явное выделение памяти попробуй вместо его использования выделить память один раз и навсегда это даст информацию о том, является ли GlobalAlloc причиной утечки P.S. что бросилось в глаза: 1. s перед проверкой не инициализируется (или вместо комментариев должен быть какой-то код?) 2. в область памяти под hG что-то считывается, но потом не используется (в том числе и pp) -------------------- qqq |
|||
|
||||
| Coocky |
|
||||||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
maxim1000
Похрену...Я уже и нули присваивал.Так еще под 7.0 пишу.Обьявляю в классе.Студия сама инициализирует..
Ну и?Что делать?
Как? Добавлено @ 19:51
Да раскоментировать надо.Забыл.Здесь забыл. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||||||
|
|||||||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Пацаны,ну худею уже от нервного напряга!
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
тогда такой вопрос: программа работает?
просто если работает, можно начинать отсекать ненужный код, что-то менять если процедура не работает и к тому же позволяет утекать памяти, надо просто написать ее по-другому... -------------------- qqq |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
maxim1000
еще раз перечитай. Все работает,но до определеного времени.Что отсекать? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
попробуй убрать все, что имеет отношение к hG
у меня почему-то сильное ощущение, что оно только выделяется и освобождается -------------------- qqq |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 2 Всего: 165 |
Не вижу чтобы указатель pp освобождался.
Попробуй создать кучу размером в 93 кб функцией HeapCreate, выдели из неё память HeapAlloc'ом. И покажи функцию рисования ;) --------------------
|
|||
|
||||
| maxim1000 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
а hG освобождается, вроде бы... но я никак не могу понять, где информация, которая в него прочиталась, используется а потому его лучше удалить, чтобы не мешал ошибку искать (кто его знает, может, и с ним связано) если же чего-то недосмотрели (в смысле его использования), обязательно вылезет: программа ведь работающая, есть с чем сравнивать... -------------------- qqq |
||||||
|
|||||||
| Coocky |
|
||||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Функция возвращает обьект типа HBITMAP.А вот и фнкция pDC->BitBlt()
так вроде память-то под него не выделяется.Присваивается только
Ок.Но чувствую проблемы... -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||||
|
|||||||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
никаких проблем есть 3 варианта: 1. программа станет работать без утечки памяти 2. программа будет работать так же, как и раньше 3. программа перестанет работать (или станет как-то совсем по-другому) в первом случае проблем никаких - задача решена во втором случае проблема остается, но функция становится более оптимальной в третьем случае становится ясно, что работа как-то завязана на hG -------------------- qqq |
|||
|
||||
| Fire-Plug |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: 1 Всего: 0 |
Сразу скажу - код не смотрел. Решение предлагается - радикальное. Если под 7.0 студией, возьми ATL класс CImage. Поддерживает достаточное к-во графич. форматов. Из файла он читает сам (т.е. имеет метод CImage::Load(const char *fileName)). Все что нужно сделать после чтения, это - инициировать событие paint для окна вывода и в его обработчике нарисовать:
Пример записал по памяти, т.к. VC7 y меня на работе, дома VC6 (нет CImage). Подобный код у меня работает не 1000 раз, а 15 раз в сек. на протяжении часов, а иногда и суток. ЗЫ: понятно, что трудно наступить на горло собственной песне, но если проект горит- все средства хороши. Добавлено @ 08:51 Да, кстати, CImage также имеет перегруженный оператор HBITMAP. Всё, о чем остается подумать, это куда поместить объект собственно CImage, чтобы он был виден в ф-ции, но существововал за ее пределами (если привед. выше ф-ция LoadAnImage() - это С-ф-ция, а не метод класса). --------------------
Объясни другому - поймешь сам (Народная примета) |
||||
|
|||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: нет Всего: 48 |
При вызове функции CopyImage в памяти выделяется место под картинку. После того как картинка уже не нужна - нужно очищать выделенную память через DeleteObject. У тебя в коде этого вызова нет. Наверно в этом и проблема утечки памяти.
-------------------- Account removed |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Попробую.Пока спасибо
Добавлено @ 22:11 Sun Удалять hBB? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Sun |
|
||||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: нет Всего: 48 |
Конечно. После того как он стает не нужен. Это можно делать в другой функции, но делать нужно обязательно. В MSDN написано
-------------------- Account removed |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |