|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 21, 2003 12:57:42 · Поправил: masquer Есть такой код, он крутится в цикле, и, если task manager не врет, примерно на каждые 3-5 итерация одна кисть не освобождается. ... invoke CreateSolidBrush, eax push eax invoke FillRect, dc, addr rect, eax call DeleteObject ; здесь true всегда ...Проблему утечки я хоть и решил другими средствами, но интересно, почему так происходит... |
|
|
Дата: Ноя 21, 2003 13:19:39 Может быть GdiFlush после FillRect? |
|
|
Дата: Ноя 21, 2003 13:26:54 GdiFlush тут и не должна помочь, но я после всей отрисовки пробовал ее вызывать - никакого влияния это не оказало... |
|
|
Дата: Ноя 22, 2003 05:27:08 Теоретически все правильно. У меня в программе на VB есть такая функция: ... hBrush = CreateSolidBrush(&hFFFFFF) Call FillRect(hDC, RECT, hBrush) Call DeleteObject(hBrush) ... Данная функция выполняется как минимум несколько раз в секунду. Программа работает по пол-часа без единого потерянного байта - никаких утечек нет. |
|
|
Дата: Ноя 24, 2003 10:36:48 masquer Наверно функция не глючит лучше обойтись без push eax а сохранить дескриптор кисти во локальной переменной. |
|
|
Дата: Ноя 24, 2003 10:56:12 Chib777 Смысл? |
|
|
Дата: Ноя 24, 2003 11:03:44 q_q invoke FillRect, dc, addr rect, eax Может она стек изменяет, или затирает. |
|
|
Дата: Ноя 24, 2003 11:08:44 Chib777 С чего бы это? Так недолго и параноиком стать. |
|
|
Дата: Ноя 24, 2003 12:02:28 Chib777 Мне это напомнило старый анекдот про то, как один ассемблерщик другому исходник показывает. Тот посмотрел и говорит: - Слушай, а зачем у тебя идут подряд два jmp в одно и то же место? 8-| - А вдруг первый не сработает! :) Если бы FillRect стек портила, мы бы до сих пор в досе работали бы :) |
|
|
Дата: Ноя 24, 2003 14:53:56 masquer Ты прав. |
|
|
Дата: Ноя 24, 2003 18:33:09 Chib777 Локальная переменная - тоже стек. masquer Я вспомнил про один старый DSP, у которого иногда не срабатывал loop на относительно коротких смещениях (-1, -2 и т.п.) и приходилось добавлять контрольный jmp или забивать нопами. |
|
|
Дата: Ноя 24, 2003 19:28:42 Quantum Дык таки это не параноя а реальность, блин теперь видимо придётся по два jmp'а везде пихать :-))) Это как у меня в Control'е вроде все символы фильтруются на прописные, а потом бах... партизан такой проскочит в виде строчного 'f', даже не знаю, может два раза вызывать проверочную функцию для пущей надёжности :-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.036 |