Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизУтечка памяти при загрузке DLL Найти похожие ветки
← →
bjohny (2004-08-26 13:26) [0]Привет. Проблема в следующем.
Создаю пустую DLL, определяю и экспортирую пустую процедуру.
В проекте DLL загружается динамически. Послу загрузки сразу же выгружаю.
LoadLibrary(...);
FreeLibrary(...);
MemProof говорит что утечки нет, но Task Manager показывает утечку.Если запустить в цикле загрузку/выгрузку на несколько часов, то кушается вся память.
Подскажите почему растет память????
← →
DVM © (2004-08-26 13:35) [1]
> но Task Manager показывает утечку
Не верь таскменеджеру. Верь MemProofу. Еще можно ProcessExplorer-у.
← →
bjohny (2004-08-26 13:39) [2]Я бы ему не верил, если бы винда не говорила что You virtual memory is LOW
← →
DVM © (2004-08-26 13:46) [3]
> если бы винда не говорила что You virtual memory is LOW
код давай...
← →
bjohny (2004-08-26 14:02) [4]Dll:
library Test;
uses
SysUtils,
Forms,
Classes;
{$R *.res}
procedure tt;
begin
//
end;
exports
tt;
begin
end.
Проект:
// Timer.Interval:=10;
procedure TForm1.Timer1Timer(Sender: TObject);
var DllH:HWND;
begin
DllH:=LoadLibrary("Test");
FreeLibrary(DllH);
Application.ProcessMessages;
end;
← →
DVM © (2004-08-26 14:20) [5]А если убрать
uses
SysUtils,
Forms,
Classes;
ситуация не меняется?
← →
bjohny (2004-08-26 14:38) [6]Если оставить SysUtils, то все нормально, а вот если Classes или Forms то ... утечка...
← →
VMcL © (2004-08-26 14:38) [7]>Application.ProcessMessages;
Убрать.
← →
bjohny (2004-08-26 14:41) [8]Ну и что.... убрал все равно...
← →
DVM © (2004-08-26 14:52) [9]
> а вот если Classes или Forms то ... утечка...
Ну вот и ответ. Там искать надо.
← →
clickmaker © (2004-08-26 14:54) [10]
> [8] bjohny (26.08.04 14:41)
а если без таймера, просто в бесконечном цикле?
← →
bjohny (2004-08-26 15:05) [11]В бесконечном цикле такая же беда.
← →
Игорь Шевченко © (2004-08-26 15:46) [12]А зачем грузить такую DLL ?
При инициализации forms очень много действий производится...
← →
bjohny (2004-08-26 15:49) [13]НУ хорошо, эт в общем.
Возьмем OLE, там тоже дует будь здоров.
Меня интересует как от этого избавиться, пусть хоть мильон действий производится.
← →
Игорь Шевченко © (2004-08-26 17:59) [14]
> Меня интересует как от этого избавиться
Сказали уже - убрать Forms.
← →
bjohny (2004-08-27 09:46) [15]Реально DLL использует WMIScripting, который в свою очередь использует OLE. Память течет по страшному. Убрать WMI??? Это не выход...
← →
Digitman © (2004-08-27 10:18) [16]
> bjohny (27.08.04 09:46) [15]
> Реально DLL использует WMIScripting, который в свою очередь
> использует OLE
вот и приводи РЕАЛЬНЫЙ код, а не абстрактный пример
← →
bjohny (2004-08-27 10:30) [17]Суть то остается одной...
← →
Digitman © (2004-08-27 10:42) [18]
> bjohny (27.08.04 10:30) [17]
> Суть то остается одной...
да, суть остается одной - не верю чтобы "пустая" ДЛЛ вызывала проблемы с утечками памяти
← →
bjohny (2004-08-27 10:59) [19]ну так глянь
← →
Digitman © (2004-08-27 11:37) [20]
> bjohny (27.08.04 10:59) [19]
> ну так глянь
даже и глядеть нечего
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c