Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 15:28   #11
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Есть ли разница?
А ты сам как думаешь?

Цитата:
Вот этот:
Код:
+Leak: Type=TAppThread; Total size=164; Count=1
00649A16TheG.exe AppsListUnit.pas TApp Start 111[3]
0064AF45TheG.exe AppsListUnit.pas TAppsList Start 313[7]
0065249ATheG.exe MainUnit.pas TMainForm FormCreate 459[12]
004FD471TheG.exe Forms.pas TCustomFormDoCreate 2648[3]
004FD0E1TheG.exe Forms.pas TCustomFormAfterConstruction 2575[1]
Где:
Код:
procedure TApp.Start;
begin
if (AppThr = nil) then
begin
{
AppThr:TThread; описана в секции Private у TApp.
}
AppThr := TAppThread.Create(True);
AppThr.AppInfo := @AppInfo;
AppThr.OnTerminate := DoThreadTerminate;
AppThr.Resume;
Timer.Interval := AppInfo.AutoRestart * 1000 * 60;
Timer.Enabled := True;
AddStartEventToLOG(AppThr.AppInfo.L istName);
end;
end;
AppThread.Free не вызывается.

Цитата:
Как понимать это?
Код:
+Leak: Type=TIntConst; Total size=48; Count=3
0041F2F1TheG.exe classes.pas RegisterIntegerConsts 2368[1]
0048EFB5TheG.exe Graphics.pas Initialization 6911[15]
00407526TheG.exe SysInit.pas _InitExe 668[7]
0065566BTheG.exe TheG.dpr Initialization 119[0]

+Leak: Type=Data; Total size=64; Count=4
0042002ETheG.exe classes.pas TList SetCapacity 2928[5]
0041FD70TheG.exe classes.pas TList Grow 2841[8]
0041FB02TheG.exe classes.pas TList Add2754[3]
00420689TheG.exe classes.pas TThreadListAdd3115[5]
0041F2FDTheG.exe classes.pas RegisterIntegerConsts 2368[1]
0048EFB5TheG.exe Graphics.pas Initialization 6911[15]

+Leak: Type=TRegGroup; Total size=100; Count=1
0041EC94TheG.exe classes.pas TRegGroups StartGroup 2059[6]
0041F13FTheG.exe classes.pas StartClassGroup 2262[3]
00496D04TheG.exe Dialogs.pas Initialization 2261[2]
00407526TheG.exe SysInit.pas _InitExe 668[7]
0065566BTheG.exe TheG.dpr Initialization 119[0]

+Leak: Type=Data; Total size=48; Count=1
0042002ETheG.exe classes.pas TList SetCapacity 2928[5]
0041FD70TheG.exe classes.pas TList Grow 2841[8]
0041FB02TheG.exe classes.pas TList Add 2754[3]
0041E345TheG.exe classes.pas TRegGroup AddClass 1733[1]
0041EAECTheG.exe classes.pas TRegGroups GroupWith 1989[3]
0041F197TheG.exe classes.pas GroupDescendentsWith 2272[3]

+Leak: Type=TList; Total size=16; Count=1
0041F4FBTheG.exe classes.pas RegisterFindGlobalComponentProc 2461[2]
00507E20TheG.exe Forms.pas Initialization 7683[3]
00407526TheG.exe SysInit.pas _InitExe 668[7]
0065566BTheG.exe TheG.dpr Initialization 119[0]
7C90DCB8ntdll.dll ZwSetInformationThread

+Leak: Type=TCriticalSection; Total size=28; Count=1
005FD749TheG.exe IdComponent.pas Initialization 172[1]
00407526TheG.exe SysInit.pas _InitExe 668[7]
0065566BTheG.exe TheG.dpr Initialization 119[0]
7C90DCB8ntdll.dll ZwSetInformationThread

+Leak: Type=Data; Total size=16; Count=1
0040BECCTheG.exe sysutils.pas AllocMem 3382[1]
004FCF76TheG.exe Forms.pas TCustomFormCreate 2554[1]

+Leak: Type=Data; Total size=36; Count=2
00405038TheG.exe
7C91045Dntdll.dll RtlReleasePebLock
Сильно похоже, что утечки памяти проверяются до финализации модуля Classes. Проверяй порядок в uses.

Цитата:
Ещё:
Код:
+Leak: Type=Data; Total size=20; Count=1
00405038TheG.exe
0040D3FFTheG.exe madDisAsm.pas COpcodeFlags
0062534DTheG.exe AppThreadUnit.pas TAppThread Execute 165[46]

+Leak: Type=Data; Total size=34; Count=1
00405038TheG.exe
00625370TheG.exe AppThreadUnit.pasTAppThread Execute 166[48]
Код:
Код:
s := ExtractFilePath(AppInfo.FileExe); //165 строка
s2 := '"' + AppInfo.FileExe + '" ' + AppInfo.RunParams; //166 строка
prc := CreateProcess(
PChar(AppInfo.FileExe), // LPCTSTR lpApplicationName,
PChar(s2),
nil,
nil,
False,
GetPriority(AppInfo.CPUPriority),
nil,
PChar(s),
SI,
PInfo);
Проблема не в этом месте. Не забывай, отчёт об утечке памяти никогда не указывает на проблему.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 20.10.2011, 23:13   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сильно похоже, что утечки памяти проверяются до финализации модуля Classes. Проверяй порядок в uses.
И каким по счёту этот модуль должен стоять?
мб есть где-то по этому сабжу литература?
Человек_Борща вне форума Ответить с цитированием
Старый 21.10.2011, 04:39   #13
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
И каким по счёту этот модуль должен стоять?
мб есть где-то по этому сабжу литература?
Документация на утилиты утечки памяти.

Модуль, который проверяет на утечки (FastMM4, EMemLeaks и т.п.), должен инициализироваться первым и финализироваться последним - иначе он пропустит то, что было сделано до него, и сообщит об утечках, которые на самом деле освобождаются, но после него.

Про порядок инициализации модулей можно почитать в справке Delphi.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.10.2011, 05:23   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

GunSmoker, не стандартный вопрос, как правильно передавать заполненную структуру Record куда-либо?

И зачем делать так:
Код:
type
   PmyRec=^TmyRec;
  TmyPec= record
  {smth}
 end;
Сейчас я где-то указываю так:
Код:
private
//something
public
rec:TmyRec;
end;
и передаю туда вот так:
Код:
var
 r:TmyRec;
begin
Object.Rec:=@r;
end;
Для чего:
Код:
type
   PmyRec=^TmyRec;
  TmyPec= record
  {smth}
 end;
и как его использовать?
Человек_Борща вне форума Ответить с цитированием
Старый 26.10.2011, 11:59   #15
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
В некоторых кодах, видел вызов:
Код:

inherited Create;

и подобные им. Есть ли разница?
Если твой конструктор называется так же, и нет необходимости конкретно указывать на конструктор - то разницы ни какой...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка приложения инструкция по адресу "0х00400000" обратилась к памяти по адресу "0х00400000". Память не может быть "wr sanalia Помощь студентам 0 30.09.2011 22:20
Что происходит на странице с такие JS: <script src="cmp.php?complete&amp;" id="las..." ...>? TwiX JavaScript, Ajax 0 05.02.2010 17:38
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Форма как "Инспектор обьектов" Dj_smart Общие вопросы Delphi 2 09.04.2008 21:01