 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 04.08.2005, 14:19 Titel: |
|
|
@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 |
|
 |
xardias JLI Master

Alter: 39 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 05.08.2005, 10:37 Titel: |
|
|
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
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 |
|
 |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 12.08.2005, 11:12 Titel: |
|
|
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 |
|
 |
xardias JLI Master

Alter: 39 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 12.08.2005, 13:48 Titel: |
|
|
eine weise entscheidung  |
|
Nach oben |
|
 |
proggaholic Junior JLI'ler

Alter: 37 Anmeldedatum: 07.05.2005 Beiträge: 85 Wohnort: Heap Medaillen: Keine
|
Verfasst am: 12.08.2005, 15:37 Titel: |
|
|
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 |
|
 |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
|
Nach oben |
|
 |
|
|
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
|