Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Программа вызывает ошибку Explorer-а   Найти похожие ветки 

 
Ал   (2003-10-16 11:02) [0]

Знатоки!
Вопрос, к сожалению, носит очень общий характер.
Есть две кооперативные программы:
первая - небольшой планировщик, по заданному расписанию выполняющий несложные действия;
вторая - целевая программа, отображающая определенную информацию на экране, предоставляющая пользовательский интерфейс для себя и заодно - для планировщика.
Приводить код - неоправдано - его достаточно много.
В результате их работы иногда, без видимой системы возникает ошибка Explorera Win95, 98 (в XP - не наблюдал) и он закрывает некоторые окна (обычно окна просмотра папок), а также слетают некоторые программы из системного лотка, но не все).
Планировщик и целевая программа проверены memproof.
Есть небольшие утечки в функциях работы с массивами - из system.pas (сам не смог исправить), ошибка загрузки Icon в KOL (хотя она грузится) - в общем ничего глобального и грубого - как мне кажется. Память, потребляемая ими, динамически не разрастается - вроде все аккуратно.
Целевая программа работает с изображениями и интерфейсом IActiveDesktop.

Возможно, съедается память (обычно одновременно работаю с Delphi и др.), возможно, еще что-то.

Обращаюсь к вашему опыту, знатоки.
Какие причины могут вызывать ошибку Explorer-а с закрытием части окон?
И что можно порекомендовать в качестве профилактики?


 
Ал   (2003-10-17 09:21) [1]

memproof дает сообщение об утечках при AllocMem в процедуре System.DynArraySetLength (у меня используется SetLength динамических массивов). Думаю, это происходит в куске

// If the heap object isn"t shared (ref count = 1), just resize it. Otherwise, we make a copy
if (p = nil) or (PLongint(p)^ = 1) then
begin
pp := p;
if (newLength < oldLength) and (typeInfo <> nil) then
FinalizeArray(PChar(p) + Sizeof(Longint)*2 + newLength*elSize, typeInfo, oldLength - newLength);
ReallocMem(pp, neededSize);
p := pp; <------ Думаю, после этого нужно освободить PP?
end

Пробовал переопределить эту функцию у себя в проекте - не находит FinalizeArray. Никто не в курсе, как можно справиться с этими утечками?



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

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
1-89232
Alex_x
2003-10-15 10:14
2003.10.27
Как правильно виходить из приложения?


1-89345
jcrush
2003-10-16 09:04
2003.10.27
прога для сотового или работа с архивом ;)


6-89442
Denk
2003-08-30 11:06
2003.10.27
Неужели работает?


3-89123
Vagrant
2003-10-07 05:06
2003.10.27
FIBDataSet и CahedUpdates


6-89436
Мякс
2003-09-02 19:00
2003.10.27
отследить подключение и отключение