was bedeutet der Inhalt der *.cgl
-
Sicher, dass Du nicht CGL meinst?
Das ist das LogFile von CodeGuard. Kannst Du mit dem Editor öffnen.CPL Dateien habe ich keine gefunden...
-
Hallo,
richtig, ist ein Schreibfehler von mir. also *.cglaber was sagt der Inhalt der LogFile von CodeGuard aus ?
bis bald Siegfried
-
wozu verwendest du codeguard?
was steht denn im logfile drin?
-
Hallo,
ich habe CodeGuard aktiviert, da ich mit vielen dynamischen Vectoren arbeite.
kleiner Auszug aus *.cglFunctions called:
memmove (2 times)
time (1 times)
vsnprintf (1696 times)
strcpy (12 times)
memset (23 times)
SysReallocMem (1303 times)
SysFreeMem (47408 times)
SysGetMem (47439 times)
realloc (1 times)
memcpy (123 times)
delete (63 times)
delete[] (17 times)
free (57 times)
new[] (29 times)
new (74 times)
calloc (5 times)
malloc (51 times)
Resource types used:
object array (29 allocs, 19 max)
object (74 allocs, 51 max)
memory block (47496 allocs, 10221 max)bis bald Siegfried
-
aufrufe von delete und new sollten mind. identisch viele sein, sonst gibst du was nicht frei.
delete (63 times)
delete[] (17 times)
new[] (29 times)
new (74 times)is das alles was drin steht oder nur der obere teil? da stehen nur sachen drin, wenn irgendwo ein fehler ist. musste halt guggen wo dir der fehler angezeigt wird. vlei mal den debugger mit verwenden!
p.s. gugg auch ma in die hilfe, da steht doch einige erklärt zum code-guard...
-
Hallo,
habe das genau vermutet. Muß also meine Anwendung genau durchforsten, wo ich nicht korrekt gearbeitet habe. Also in Zukunft sauberer arbeiten und mehr aufpassen, das dieses nicht mehr vorkommt.
Vielen Dank für die Info's
bis bald Siegfried
-
wenn du irgendwo ein delete vergessen haben solltest sagt der Codegard dir das z.B. so
Error 00080. 0x300010 (Thread 0x0368): Resource leak: The object array (0xD26A78) was never deleted The object array (0x00D26A78) [size: 40 bytes] was created with new[] Call Tree: 0x00401E8C(=Project1.exe:0x01:000E8C) C:\Borland\CBuilder6\Projects\Unit1.cpp#21 0x4010798A(=vcl60.bpl:0x01:05698A) 0x4010A9A8(=vcl60.bpl:0x01:0599A8) 0x4010AAE0(=vcl60.bpl:0x01:059AE0) 0x4010A9A8(=vcl60.bpl:0x01:0599A8) 0x4010A623(=vcl60.bpl:0x01:059623) ------------------------------------------das was du gepostet hast ist nur die Statistik
es kann durchaus vorkommen, dass man mehr new als delete hat, z.B. wenn man dynamische Items (TButton, TLabel, ...) erzeugt und dem Formular auf dem es erstellt wurde das Löschen überläßt
wenn man mit dem BCB6 ein neues Projekt erstellt und dieses einfach nur kompiliert bekommt man folgende Statistik
Functions called: delete (35 times) SysReallocMem (1 times) SysFreeMem (301 times) SysGetMem (309 times) realloc (1 times) memcpy (1 times) delete[] (2 times) free (26 times) new[] (14 times) new (40 times) calloc (5 times) malloc (20 times) Resource types used: object array (14 allocs, 13 max) object (40 allocs, 28 max) memory block (335 allocs, 259 max)auch hier unterscheiden sich new und delete eindeutig, ohne dass man selbst irgendwelchen Quellcode oder Komponenten verwendet
-
wenn man sich mit memproof den speicherverbrauch anschaut, sieht man, das die vcl nicht alles freigibt, d.h. speicherlecks einbaut. zwar nur relativ kleine aber immerhin...
-
siehe auch hier:
-
Hallo,
vielen Dank für die viele Info's. Arbeite alles erstmal ab.
bis bald Siegfried
