JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Objekte oder Zeiger auf Objekte?
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 04.08.2005, 14:19    Titel: Antworten mit Zitat

@xardias:
da ich leider nicht so geübt im überladen bin und das meiste dazu schon vergessen habe...könntest du den Source für das Überladen von new und delete hier reinposten?
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 39
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 05.08.2005, 10:37    Titel: Antworten mit Zitat

auch wenn patrick mich für diesen vorschlag lynchen wird.
du bekommst am meisten debug informationen wenn du makros dafür verwendest.

normalerweise kannst du den operator new so überladen:

CPP:
void* operator new (size_t size)
{
    return ::new char [size];
}


jedoch hilft einem das nicht nicht so viel weiter. man könnte in der funktion die anzahl der new aufrufe loggen, und mit der anzahl der delete aufrufe vergleichen. dann wüsste man, dass man ein memory leak hat.. aber nicht wo Wink

daher ist es ganz praktisch dafür ein makro zu schreiben.

CPP:
void* operator new (size_t size, char const * file, int line)
{
    std::cout << "operator new called at: " << file << "[" << line << "]" << std::endl;
    return ::new char [size];
}
#define new new (__FILE__, __LINE__)

wenn man dazu noch eine kleine klasse schreibt, die die aufrufe speichert und danach mit den aufrufen von delete vergleicht, kann man am ende des programms ausgeben wo memory leaks entstanden sind. inklusive zeilen und dateiangabe.
CPP:
void operator delete (void * p)
{
    ::delete p;
}

so lässt sich delete überladen.
kann sein, dass ich nen kleinen fehler drin hab. bin ein bisl c++ eingerostet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MichaelB
Mini JLI'ler



Anmeldedatum: 09.07.2005
Beiträge: 27

Medaillen: Keine

BeitragVerfasst am: 12.08.2005, 11:12    Titel: Antworten mit Zitat

Ok, danke erstmal für die vielen Antworten! Schätze, ich muß mich noch mehr eingraben in das Thema Zeiger & Co, "Wann nutze ich new/delete", "Was passiert auf dem Stack/Heap", "Speicherlecks", etc.pp...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 39
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 12.08.2005, 13:48    Titel: Antworten mit Zitat

eine weise entscheidung Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
proggaholic
Junior JLI'ler


Alter: 37
Anmeldedatum: 07.05.2005
Beiträge: 85
Wohnort: Heap
Medaillen: Keine

BeitragVerfasst am: 12.08.2005, 15:37    Titel: Antworten mit Zitat

Sehr einsichtig...schade, dass nicht mehr Leute so denken, gelle? ;)

@xardias:
Ja, klar, loggen usw usf, kein Thema...ich
meinte nur, wenn man Probleme hat,
mit new und delete umzugehen, vielleicht mit der Überladung
Probleme bekommen könnte...oder vielleicht es sich, dank logging,
selbst beibringen kann, wann was wie gemacht wird, weiss nicht ;)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
MichaelB
Mini JLI'ler



Anmeldedatum: 09.07.2005
Beiträge: 27

Medaillen: Keine

BeitragVerfasst am: 12.08.2005, 20:06    Titel: Antworten mit Zitat

Interessantes zum Thema Heap in der MSDN Hilfe:

Krishnan "Vor- und Nachteile von Heaps"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/heap3.asp

Auf Deutsch in der Offline MSDN:
ms-help://MS.MSDNQTR.2003FEB.1031/dntaloc/html/heap3.htm#heap3_whatis
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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