Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Недостаточно памяти для завершения операции"


alexey_potapov ©   (2006-11-17 17:28:00) 

Ошибка: "Недостаточно памяти для завершения операции".
При авто тестировании приложения (многочисленном открытии / закрытии окон)
наблюдается увеличение "объектов USER" (счетчик в таск менеджере).
На определенной итерации выдается ошибка (значение счетчика ~10000)
Недостаточно памяти для завершения операции
[40018CE9] Sysutils.RaiseLastOSError + $75
[00504214] Controls.TWinControl.CreateWnd + $130
...
(Т.е. получается что CreateWindowEx возратил 0)
известно что у windows есть ограничение на количество окон для процесса порядка 10000.
Но если я смотрю Ms Spy++, то количество окон в процессе гораздо меньше.
Использую delphi7, win2000 sp4. Утечек памяти (выделенной Memory Menager) нет.
Формы, на которых происходит утечка уничтожаются при закрытии
В связи с этим вопросы
1) Что входит в "объекты USER" - счетчике в таск менеджере помимо окон.
Возможно ли что это утечки не окон, а других win объектов?
2) Если предположить что это утечки окон, то как их обнаружить,
какой инструмент использовать? DestroyWindow уничтожает так же дочернии окна,
как в таком случае может происходить утечка?
Помогите ,пожалуйста, выработать методологию решения данной проблемы.


Rouse_   (2006-11-17 22:19:00) [1]

Если Controls.TWinControl.CreateWnd , то значит не везде есть разрушение объектов. Если в твоем коде ты говоришь - нет утечьки, ищи ее в сторонних компонентах, которые используешь...


alexey_potapov   (2006-11-17 17:58:00) [2]

я же написал "формы, на которых происходит утечка уничтожаются при закрытии" - то есть делается наподобе form.Free. В свою очередь все дочерние контролы должны уничтожится. Но какая-то утечка есть (возможно хандлов) есть. Но утечки самих объектов нет, так как это проверяется MemoryManager!


clickmaker   (2006-11-17 17:40:00) [3]

и что имеется в виду под "многочисленном открытии / закрытии окон"? В VCL закрытие формы далеко не тоже самое, что физическое уничтожение окна


alexey_potapov   (2006-11-17 17:36:00) [4]

явно CreateWindow нигде не используется, все стандартные компоненты vcl + несколько производных


alexey_potapov   (2006-11-17 17:35:00) [5]

1) Это обычные формы
2) Есть несколько собственных компонентов
3) DestroyWindow использует vcl


clickmaker   (2006-11-17 17:34:00) [6]

значит, на какой-то CreateWindow нет своего DestroyWindow


DVM   (2006-11-17 17:30:00) [7]

1) Это VCL окна?
2) Компоненты сторонние используются?
3) DestroyWindow() - зачем же так уничтожать окна?


Наверх

Титульная страница Поиск, карта сайта Написать письмо