Главная страница
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.021 c
3-89182
Max
2003-10-06 12:20
2003.10.27
SQL запрос на добавление


1-89312
Chlavik
2003-10-16 19:14
2003.10.27
Своё, что то типа DoubleBuffered


7-89615
Opryshok
2003-07-16 19:53
2003.10.27
Горячие клавиши


1-89325
LocalNet
2003-10-16 15:58
2003.10.27
Передача файла в локальной сети


14-89469
Nik8.
2003-10-07 11:56
2003.10.27
ZZZZ