Merhaba,
TClientDataset'den türeterek bir component geliştirmeye çalışıyorum ve bir memory leak ile karşılaştım ve çözemedim. Neyseki soru sormak için kaynak kodun tamamını paylaşmak yerine sorunu reproduce edebilecek bir kod geliştirdim.
Aşağıdaki kodu çalıştırıp uygulamamayı kapatırken (reportmemoryleaksonshutdonw ise) memory leak hatası veriyor. FastMM ile hatayı dosyaya logladım, ilgili kısım da aşağıdaki gibidir.
Sorunun olduğu yerde bir assembly kod var ama sebebini açıkçası çözemedim. Yardımlarınız memnuniyetle karşılanacaktır
TClientDataset'den türeterek bir component geliştirmeye çalışıyorum ve bir memory leak ile karşılaştım ve çözemedim. Neyseki soru sormak için kaynak kodun tamamını paylaşmak yerine sorunu reproduce edebilecek bir kod geliştirdim.
Aşağıdaki kodu çalıştırıp uygulamamayı kapatırken (reportmemoryleaksonshutdonw ise) memory leak hatası veriyor. FastMM ile hatayı dosyaya logladım, ilgili kısım da aşağıdaki gibidir.
Sorunun olduğu yerde bir assembly kod var ama sebebini açıkçası çözemedim. Yardımlarınız memnuniyetle karşılanacaktır
procedure TForm1.Button1Click(Sender: TObject); begin ClientDataSet1.Close; ClientDataSet1.Tag := 1; ClientDataSet1.Open; //ClientDataSet1.AppendRecord(['General']); end; procedure TForm1.ClientDataSet1BeforeOpen(DataSet: TDataSet); begin if ClientDataSet1.Tag = 1 then begin ClientDataSet1.Tag := 0; ClientDataSet1.Fields.Clear; ClientDataSet1.FieldDefs.Clear; ClientDataSet1.FieldDefs.Add('Collection', ftString, 50); ClientDataSet1.FieldDefs.Find('Collection').CreateField(ClientDataSet1); ClientDataSet1.CreateDataSet; end; end;
--------------------------------2017/6/19 12:00:21-------------------------------- A memory block has been leaked. The size is: 68 This block was allocated by thread 0x4FA8, and the stack trace (return addresses) at the time was: 418CD6 [FastMM4.pas][FastMM4][DebugAllocMem$qqri][9900] 407276 [System.pas][System][AllocMem$qqri][4557] 65F91B [Datasnap.DBClient.pas][Datasnap.DBClient][Dbclient.TCustomClientDataSet.AllocKeyBuffers$qqrv][3965] 6598AE [Datasnap.DBClient.pas][Datasnap.DBClient][Dbclient.TCustomClientDataSet.InternalOpen$qqrv][1514] 623BC8 [Data.DB.pas][Data.DB][Db.TDataSet.DoInternalOpen$qqrv][12527] 623C77 [Data.DB.pas][Data.DB][Db.TDataSet.OpenCursor$qqro][12556] 65885B [Datasnap.DBClient.pas][Datasnap.DBClient][Dbclient.TCustomClientDataSet.OpenCursor$qqro][1282] 623B2F [Data.DB.pas][Data.DB][Db.TDataSet.SetActive$qqro][12508] 62396B [Data.DB.pas][Data.DB][Db.TDataSet.Open$qqrv][12464] 65BE16 [Datasnap.DBClient.pas][Datasnap.DBClient][Dbclient.TCustomClientDataSet.CreateDataSet$qqrv][2342] 706827 [Unit1.pas][Unit1][TForm1.ClientDataSet1BeforeOpen$qqrp16Data.Db.TDataSet][64] The block is currently used for an object of class: Unknown The allocation number is: 1092 Current memory dump of 256 bytes starting at pointer address 7EF776F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F1 7F B4 7C 80 80 80 80 80 80 80 80 00 00 00 00 C1 70 F7 7E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 73 04 00 00 D6 8C 41 00 76 72 40 00 1B F9 65 00 AE 98 65 00 C8 3B 62 00 77 3C 62 00 5B 88 65 00 2F 3B 62 00 6B 39 62 00 F4 65 70 00 D5 A7 53 00 A8 4F 00 00 A8 4F 00 00 AA 72 40 00 BE F5 60 00 AF F9 65 00 FA 9A 65 00 B8 3C 62 00 06 8C 65 00 9C 3B 62 00 F7 31 62 00 3C 8B 41 00 51 8B 41 00 29 7A 65 00 3C 00 00 00 00 00 00 00 69 F3 D9 86 E4 FB 71 00 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ñ ´ | € € € € € € € € . . . . Á p ÷ ~ . . . . . . . . . . . . . . . . s . . . Ö Œ A . v r @ . . ù e . ® ˜ e . È ; b . w < b . [ ˆ e . / ; b . k 9 b . ô e p . Õ § S . ¨ O . . ¨ O . . ª r @ . ¾ õ ` . ¯ ù e . ú š e . ¸ < b . . Œ e . œ ; b . ÷ 1 b . < ‹ A . Q ‹ A . ) z e . < . . . . . . . i ó Ù † ä û q . € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €