Главная страница
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.032 c
8-89407
D.J.Star
2003-06-27 11:07
2003.10.27
Как воспроизвести Sound из базы данных?


14-89535
sniknik
2003-10-08 02:27
2003.10.27
Переопределение прерываний в Dos, Pascal, видео (int 10h)


14-89569
Gfa
2003-10-09 23:17
2003.10.27
Зоопарк


3-89131
Водопад
2003-10-07 20:41
2003.10.27
Базы данных


14-89506
Игорь Шевченко
2003-10-07 17:12
2003.10.27
Так портит Windows XP жесткие диски или нет ? :)