PDA

View Full Version : اشکال زدایی leack memory



khoshblagh
سه شنبه 15 مهر 1393, 12:58 عصر
با سلام خدمت دوستان
تازگی برنامه Eureka روی سیستم نصب کردم. و برنامه ای را با مرور اجرا نمودم. Eureka پیام نشتی حافظه میدهد. 124322

لطفا در صورت امکان راهنمایی نمائید. متشکرم.

یوسف زالی
سه شنبه 15 مهر 1393, 15:10 عصر
سلام.
هیچ اطلاعاتی نمی دید انتظار نداشته باشید کسی بتونه کمکی کنه.
مشخصات فرم، اشیای آزاد، اشیای ران تایم، ..
هیچ چی؟؟

khoshblagh
یک شنبه 20 مهر 1393, 19:37 عصر
ببخشید . مشکل سر آزاد سازی lname میباشد که نمیدانم چگونه اینکار را انجام دهم.LName : pchar چگونه باید آزاد گردد؟
ضمنا تصویر دوم ضمیمه پست یک نامربوط است.

procedure TfrmMainForm.FormCreate(Sender: TObject);
var
LName : pchar ;
I : Integer;
begin
I:=1;
Getmem(Lname,30);
GetKeyboardLayoutName(lname);
While (LName<>'0000401')And (LName<>'0000429') And (I<20) Do Begin
ActivateKeyboardLayout(HKL_NEXT,KLF_REORDER);
GetKeyboardLayoutName(lname);
Inc(I);
End;
Application.BiDiMode:=bdRightToLeft;
end;

khoshblagh
یک شنبه 20 مهر 1393, 20:54 عصر
نحوه آزاد سازی متغیر فوق را به شکل زیر میباشد.البته این را از یک سایت پیدا کردم.
FreeMem(Lname,30);

Felony
شنبه 03 آبان 1393, 06:14 صبح
توجه داشته باشید FreeMem حتما باید در بلوک try ... finally صدا زده بشه .

برای اینکه ببینید پروژتون نشت حافظه داره خود Delphi فکر میکنم از نسخه XE2 به بعد راهکاری ارائه کرده ، کافیه Leakage Reporter خود دلفی رو به صورت زیر فعال کنید :


ReportMemoryLeakOnShutdown := True;

BORHAN TEC
شنبه 03 آبان 1393, 07:27 صبح
فکر میکنم از نسخه XE2 به بعد راهکاری ارائه کرده
دقیقش از زمان دلفی 2006 به بعده :چشمک:

khoshblagh
شنبه 03 آبان 1393, 18:55 عصر
با سلام این کد کجای برنامه قرار دهیم؟ متشکرم.






ReportMemoryLeakOnShutdown := True;