Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dosya kaydederken memory leak hatası.
#1
Photo 
Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);

Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.

An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1

TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.

Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#2
TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
(23-06-2020, Saat: 02:17)KUNTAY Adlı Kullanıcıdan Alıntı: Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);

Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.

An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1

TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.

Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.

Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.  

   

Örnek:
 SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);
DelphiCan'dır!
Cevapla
#4
TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);
WWW
Cevapla
#5
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);

Yaptığım testte Delphi 10.3.3 Rio ve Delphi 10.4 Sydney için TEncoding static sınıfında, herhangi bir bug'a rastlamadım.
DelphiCan'dır!
Cevapla
#6
(23-06-2020, Saat: 08:22)mrmarman Adlı Kullanıcıdan Alıntı: TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?

Free etmiyordum ettiğim zaman donuyor etmediğim zaman donmuyordu.

Bu arada uniguide bu sorunu yaşıyorum normal windows desktopta bu sorun oluşmadı.

(23-06-2020, Saat: 09:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(23-06-2020, Saat: 02:17)KUNTAY Adlı Kullanıcıdan Alıntı: Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);

Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.

An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1

TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.

Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.

Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.  



Örnek:
 SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);


Aynen dediğiniz gibi direk metoda atayabiliyormuşum :Smile  güzel çalıştı.


Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.

(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);

Bunda da aynı hatayı verdi Sad
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#7
Aldığınız hata oluşturduğunuz bir nesneyi free etmediğinizden kaynaklı bir hata.
her create metodu ile oluşturduğunuz nesneyi free ediyorsanız ve dediğim şekilde yaparsanız bir problem çıkmaması lazım.
Kodun bir yerinde create edip ama free etmediğiniz bir nesne var.
WWW
Cevapla
#8
(23-06-2020, Saat: 13:57)KUNTAY Adlı Kullanıcıdan Alıntı:
(23-06-2020, Saat: 09:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.  

Örnek:
 SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);

Aynen dediğiniz gibi direk metoda atayabiliyormuşum :Smile  güzel çalıştı.

Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.

@sadettinpolat ın belirttiği bug olabilir. Delphi 10.3.3 veya 10.4'te bu sorun yok.
Hangi sürümü kullanıyorsunuz?
DelphiCan'dır!
Cevapla
#9
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);

Sadeddin bey ufak bir hata yapmışım değişkeni verirken şuan sizin söylediğiniz şekilde çözüldü.

(23-06-2020, Saat: 14:33)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(23-06-2020, Saat: 13:57)KUNTAY Adlı Kullanıcıdan Alıntı: Aynen dediğiniz gibi direk metoda atayabiliyormuşum :Smile  güzel çalıştı.

Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.

@sadettinpolat ın belirttiği bug olabilir. Delphi 10.3.3 veya 10.4'te bu sorun yok.
Hangi sürümü kullanıyorsunuz?

Delphi 10.3 Community Edition 

Değişkene  atayıp free edince hata vermedi.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  matematiksel karşılaştırma hatası nevzatc 7 441 14-04-2026, Saat: 06:36
Son Yorum: emailx45
  Delphi ile SQL server bağlantı hatası yakalama Under 20 1.981 21-11-2025, Saat: 15:24
Son Yorum: mrmarman
  OpenSSL Hatası mcuyan 1 487 29-04-2025, Saat: 02:28
Son Yorum: mcuyan
  Projeye dosya olarak eklenmiş dosyanın içeriğini okumak yhackup 9 1.753 18-04-2025, Saat: 21:39
Son Yorum: bakyuz
Photo Delphi 12.2ilginç bir ide hatası tuna 13 3.368 25-03-2025, Saat: 09:47
Son Yorum: tuna



Konuyu Okuyanlar: 2 Ziyaretçi