ПредишенСледващото

Методи за изпитване на изтичане на памет в програмата

Кажете ми, как да се провери дали има изтичане на памет в програмата или не. Като за този специален компоненти са?

FastMM4, MemProof, # XA0; AQTime

Тук кажа. Аз открих, че тази функция повикване в течение причинява изтичане на памет. Защо?

TMyRec = рекорд
# XA0; MStr: String;
# XA0; USTR: String;
# XA0; ID: цяло число;
приключи;

функционира GetMR: TMyRec;
започвам
ZeroMemory (@Result, SizeOf (Резултат));

Result.MStr: = "Текст";
Result.UStr: = "Текст";
Result.ID: = 1;
приключи;

През втория и следващите влизания Резултати съдържа стари данни.
За да е ясно, което правя ZeroMemory (@Result, SizeOf (Резултат));
Но открих, че ако премахнете процедурата, след изтичане на памет няма.
Защо? И точно в този случай, почистете резултатът?


> # XA0; открили, че се обадите на тази функция в цикъла, което води до
> Теч памет.

а като сте открили?

и ако не е String и използването ShortString, ще се появят течове?

Отворя диспечера на задачите на Windows и погледнете в паметта, която се консумира. Ако премахнете ZeroMemory низ, използваната памет вече не се увеличава.


> Отваряне на диспечера на задачите на Windows и погледнете в памет на това
> Цена

коя колона гледаш? Няма създадени графа отразява действителната заетост памет.
Теч се случва, защото не е нужно да се направи дълги редици ZeroMemory

Вижте "Memory", след като "процесора".
Да, със сигурност, ако направите като String [250], споменът остава непроменен. Забравих, че низ също е дин. масиви.

За ужасно Baks * 99


> Бакс # XA0; (1/31/11 03:07) [11]
>
> За нещастен Baks * 99
>

Можете и "жалък". И ние сме по-спокойни.
И съвсем реална помощ (техническа помощ) от много реални хора.
Между другото по този въпрос и високо уважаван форум. (Да, и други известни руски език форуми Delphi).

Послепис За "болен от шарка $ 99." Колко харчите на месец на мобилния си телефон?

P.P.S. Или ти неразбрани?


> # XA0; Или аз ви разбрали?


> Колко харчите на месец на мобилния си телефон?

FastMM4 пита SHFolder.dcu. Къде да го получа? Къде трябва да бъде? Имам Delphi 5.

Бакс # XA0; (30.01.11 19:54)
MStr: String;
Прашки nizya ZeroMemory, Sterling е указател.
и излитане за това:
процедура TForm1.Button1Click (Sender: TObject);
Var
# XA0; и: цяло число;
# XA0 р: указател;
започвам
# XA0, защото: = 0-10 направи
# XA0; започне
# XA0; # XA0; GetMem (р, 1,048,576);
# XA0; # XA0 р: = 0;
# XA0; # XA0; FreeMem (р);
# XA0; край;
приключи;

Напитката пациент? не
Димът пациент? не
На жените ходят? не

Лекар: пациентът не се противопоставят, аз все още се намери, че да.


> String nizya ZeroMemory

Да, аз вече знаех. Аз просто изтръгна ми прашки :)


> Пациентът не се противопоставят, аз все още се намери, че да бъде

И това е, което аз все още искам да попитам:

Connected FastMM, получих:

В това приложение, изтичане на памет случи. Теч на малки по размер блокове (с изключение на регистрирано от очакваното индекс на изтичане): 37 - 52 байта: AnsiString х 1

Това се дължи на следния код:

инициализация
# XA0; AppPath: = ExtractFilePath (ParamStr (0));
# XA0; FilesPath: = AppPath + FilesDirName + "";

Още публикации за теча не се показват. Знаете го правя?
И още един въпрос: Защо няма данни за променлива FilesPath?


> Бакс # XA0; (30.01.11 19:54)
>
> Prompt, как да се провери дали има изтичане на памет в програмата
> Или не. Като за този специален компоненти са?

започвам
# XA0; writeln (ParamStr (1));
край.

и бягай

за %% н в (F:. \ mypath \ * вх) направи a.exe %% п

В Taskmgr ние виждаме, че изтичане на памет. Някъде.

a.exe "F: \ mypath \ file1.ent"
a.exe "F: \ mypath \ file2.ent"
a.exe "F: \ mypath \ file3.ent"
a.exe "F: \ mypath \ file4.ent"
.

Аз съм тук с FastMM разбрах веднага, като всички истински, понякога аз се използват, ако забравя, че

Аз съм пътят, и двете тези членове наскоро са прочели през Google намерен.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!