ja wo ist er denn, der Memleak?
-
Hallo,
was sagt mir folgende Meldung vom Visualstudio (2k3) ?
Detected memory leaks! Dumping objects -> {4402} normal block at 0x00CE1F78, 80 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {3509} normal block at 0x00CE1BC8, 80 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {2568} normal block at 0x00CDCF10, 80 bytes long. Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Object dump complete.
Schön und gut, da sind memleaks drinnen. Aber es wär ganz toll zu wissen, welche
Spaghettiwindung im Code dafür verantwortlich ist...thx
Martin
-
Und woher sollen wir das jetzt wissen?
-
Walli schrieb:
Und woher sollen wir das jetzt wissen?
Ich interpretier das mal so, dass es nicht möglich ist
rauszufinden, wo das Speicherleck entsteht, sondern nur, dass übherhaupt eines
vorhanden ist...
Najo dann überseh ich einfach die mickrigen 240 Bytes und alles ist in Butter
-
Natürlich kann man das rausfinden.
#ifdef DEBUG #define new DEBUG_NEW #endif
Weitere Infos:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_debug_new.asp
-
Hm...
ich verwend kein MFC...
Ausserdem ist mir nicht ganz klar, was es mir bringt, wenn mir das
Ding aufpasst, wo überall ein new steht (und verwendet wird).
Das kann ich im Zweifel auch noch mit einer einfachen Suche rauskriegen.Interessanter wäre es schon zu wissen, ob es zu jedem "new([])" auch ein "delete([])" gibt
thx
Martin
-
Du kannst zusätzlich zu den von die genannten Ausgaben den Stack Trace der zugehörigen Allokationen ausgeben lassen. Dazu muss man ein bissl rumfrickeln, ich hatte da was fertiges per Google gefunden, wo man nur noch ein #define setzen musste. Hab's aber nicht mehr da, weil ich mein Gewicht auf Sprachen mit GC verlagert habe.
-
anonymus schrieb:
Interessanter wäre es schon zu wissen, ob es zu jedem "new([])" auch ein "delete([])" gibt
Wenn das drin ist kann er dir unter anderem anzeigen zu welchem new kein delete erfolgte. Sowas kann man sich notfalls auch selber stricken.
-
rapso->greets();
-
hmm oder du benutzt profi tools
z.b. eine möglichkeit
bouncechecker oder bugtracker
unter codeproject findest du auch freie klassen, die sind nicht ganz mächtig aber für dein problem, wirds ok sein
-
ajax schrieb:
unter codeproject findest du auch freie klassen, die sind nicht ganz mächtig aber für dein problem, wirds ok sein
mächtig hin oder her:
das hier hat mir geholfen:
http://www.codeproject.com/tools/visualleakdetector.aspHab damit keine 5 Minuten nach dem Leck gesucht (inclusive Einarbeitungszeit)
thx
Martin