JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=e720d7a508ec14b4db6057af3e2c6903Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

_CrtDumpMemoryLeaks

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 26.07.2003, 10:08    Titel: _CrtDumpMemoryLeaks Antworten mit Zitat

Ich habe es endlich hinbekommen, die Memory-Leaks anzuzeigen, aber was bringt mir das? :
Code:

Detected memory leaks!
Dumping objects ->
{59} normal block at 0x00C218E0, 32 bytes long.
 Data: < <V             > 04 3C 56 00 01 00 00 00 00 DD 14 00 00 00 00 00
{58} normal block at 0x00C21930, 176 bytes long.
 Data: <                > 01 00 00 00 00 DD 14 00 00 00 00 00 E0 18 C2 00
{57} normal block at 0x00C21A10, 80 bytes long.
 Data: < ;V     *       > D8 3B 56 00 01 00 00 00 2A 15 0A 92 20 00 00 00
Object dump complete.

Woher weiß ich denn jetzt, woich Speicher nicht freigegeben habe?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 26.07.2003, 15:33    Titel: Antworten mit Zitat

Schaue per Debugmodus nach, wo du den Speicher zuweist (per new oder malloc), der die unter _CrtDumpMemoryLeaks aufgelisteten adressen enthält und überlege, warum der Speicher nicht wieder freigegeben wird.
PS.: Die Adressen können sich mit jedem Programmdurchlauf ändern, also eine alte Anzeige nützt in der Regel wenig...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.07.2003, 16:06    Titel: Antworten mit Zitat

Wenn du die Werte hast (57,58,59 usw.) kannst du bei nächsten Programmstart im Code oder im Debugger _crtBreakAlloc = 57; verwenden. Alternativ kannst du _CrtSetBreakAlloc(57); aufrufen.
Dann sollte der Debugger an der Stelle stehen bleiben, an der du Speicher reserviert hast, der nicht wieder freigegeben wurde. Natürlich darfst du am Code nichts ändern.

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 26.07.2003, 23:30    Titel: Antworten mit Zitat

Wenn die Speicherallokierung von Benutzereingaben abhängig ist, wenn mehrere Thread's gleichzeitig speicher allokieren könnten oder wenn ein Timer für zeitversetzte Speicherallokierung zuständig ist, sind die Angaben in der Regel nicht mehr Vergleichbar.
Es wird sicherlich noch 1000 andere Gründe geben, warum ein Speicher nicht in der selben reihnfolge allokiert wird, wie ein Programmlauf zuvor - und das ohne Veränderungen am Code.
Aber wenn man sicher sein kann, dass die Reihnfolge immer gleich ist, ist dieser Weg natürlich zu empfehlen.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum